Windows Powershell がロックする

Windows Powershell がロックする

Windows Powershell でコマンドを実行するときにロックしないようにするにはどうすればよいですか? Linux では、コマンドの最後に & を追加して、そのプロセスを閉じずにターミナルを引き続き使用できることは知っています。Windows Powershell でも同様の機能がありますか?

答え1

コマンドを実行するときに Windows Powershell がロックされないようにするにはどうすればよいですか?

コマンドレットを使用してStart-Job、バックグラウンドでジョブを開始します。

&これは、Unix/Linux のコマンドの最後で使用するのと同等の Powershell です。


PowerShell バックグラウンドジョブ

PowerShell バックグラウンド ジョブを作成する最も簡単な方法は、Start-Jobコマンドレットを使用することです。コマンドレットを使用してスクリプト ブロックを指定できます。たとえば、次のコマンドは、1 から 50 までの数字を取得する単純なスクリプト ブロックをバックグラウンド ジョブとして実行します。

Start-Job {1..50}

次の 1 行のコマンドを使用して、スクリプト ブロックに引数を渡すことができます。

Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25

または、スクリプトを実行することもできます:

Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential [email protected])

以下の 3 つのコマンドの結果を確認できます。これらのコマンドは PowerShell 3.0 で実行しました。ただし、PSJobTypeName 列は表示されませんが、PowerShell 2.0 でも機能します。

図 1: バックグラウンドでスクリプトブロックとスクリプトを実行する

出力はStart-Jobジョブ キュー オブジェクトです。-Job コマンドレットを使用してジョブとその結果を管理します。ジョブは ID で参照できます。上の画像では、ジョブ ID が 1 から 3、そして 5 へとジャンプしていることに注目してください。

ソースPowerShell バックグラウンドジョブ

上記のリンクでは、以下のトピックについてさらに詳しく説明しています。

  • コマンドレットを使用してGet-WMIObjectバックグラウンドジョブを作成する

  • コマンドレットを使用してInvoke-Commandバックグラウンドジョブを作成する

  • バックグラウンドジョブの管理

  • ジョブ結果の取得

  • ジョブを停止して待機する


参考文献

答え2

ジョブの代わりに使用できる実行スペース: バックグラウンドでコマンドを実行すると、パフォーマンスが向上し、オーバーヘッドが削減されます。

実装:

関連情報