stop-vm

Anonymous
2025-01-12T01:57:28+00:00

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 Server デバイスと展開

ロックされた質問。 This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question. To protect privacy, user profiles for migrated questions are anonymized.

0 件のコメント コメントはありません
{count} 件の投票

8 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2025-01-12T04:42:20+00:00

    Start-Job でジョブとして登録すれば良いのでは?

    about_Jobs - PowerShell | Microsoft Learn

    about_Job_Details - PowerShell | Microsoft Learn

    0 件のコメント コメントはありません
  2. 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でも実行されません。。。

    0 件のコメント コメントはありません
  3. Anonymous
    2025-01-13T03:04:29+00:00

    PowerShell コマンドレットなのでコマンドプロンプトでは実行できません。

    コマンドプロンプトから

    powershell  -Command  PowerShellで実行するコマンド
    

    を実行します。

    0 件のコメント コメントはありません
  4. Anonymous
    2025-01-13T06:22:31+00:00

    説明不足で申し訳ありません。

    コマンドプロンプトから

    powershell -Command

    は付けた状態でも同様です。

    0 件のコメント コメントはありません
  5. 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}"
    

    とかになるのかな(未確認)。

    0 件のコメント コメントはありません