Start-Job でジョブとして登録すれば良いのでは?
stop-vm
PowerShellのStop-VMコマンドを複数の仮想マシンに対して同時に実行したいのですが、どなたかご教示いただけないでしょうか。
Stop-VM Name <仮想マシン1> -Force
Stop-VM Name <仮想マシン2> -Force
Stop-VM Name <仮想マシン3> -Force
とした場合、仮想マシン1から順番にシャットダウンされ、時間を要してしまいます。
尚、下記でも目的は達成できたのですが、コマンドプロンプトから実行すると -AsJob の部分が反映されず順番にシャットダウンされます。。。
Get-VM | Where-Object {$_.Name -like "*WAP*"} | Stop-VM -Force -AsJob
ビジネス向け Windows | Windows Server | デバイスと展開 | その他
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
-
Anonymous
2025-01-12T04:42:20+00:00 -
Anonymous
2025-01-12T13:28:41+00:00 ご教示ありがとうございます。
下記をPowerhelllで実行はできたのですが、コマンドプロンプトだと起動しません。
Start-Job -ScriptBlock {Stop-VM PC1 -Force}
Start-Job -ScriptBlock {Stop-VM PC2 -Force}
Start-Job -ScriptBlock {Stop-VM PC3 -Force}
PowerShell のスクリプトの実行ポリシーかと思いましたが、Bypassでも実行されません。。。
-
Anonymous
2025-01-13T03:04:29+00:00 PowerShell コマンドレットなのでコマンドプロンプトでは実行できません。
コマンドプロンプトから
powershell -Command PowerShellで実行するコマンドを実行します。
-
Anonymous
2025-01-13T06:22:31+00:00 説明不足で申し訳ありません。
コマンドプロンプトから
powershell -Command
は付けた状態でも同様です。
-
Anonymous
2025-01-13T10:49:32+00:00 状況が今一つよく分からないのですが、
> Powerhelllで実行はできたのですが
というのは PowerShell で
Start-Job -ScriptBlock {Stop-VM PC1 -Force}でバックグラウンドジョブとして Stop-VM が実行できたということですか?
そして
> コマンドプロンプトだと起動しません。
とはコマンドプロンプトで
powershell -Command Start-Job -ScriptBlock {Stop-VM PC1 -Force}では実行できないということですか? ※このコマンドは期待(VM を停止する)通りには実行されないと思いますが。
about_PowerShell_exe - PowerShell | Microsoft Learn
を見ると、コマンドプロンプトでスクリプトブロックを実行する場合は
powershell -Command {Get-WinEvent -LogName security}
ではなく
powershell.exe -Command "& {Get-WinEvent -LogName security}"
とするように書かれていますね。
なので
powershell -Command "Start-Job -ScriptBlock &{Stop-VM PC1 -Force}"とかになるのかな(未確認)。