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

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

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

8 件の回答

並べ替え方法: 新しい順
  1. Anonymous
    2025-01-14T01:11:14+00:00

    ついでに言えば、なぜコマンドプロンプトからの実行が必要なのでしょう?

    PowerShell で実行すれば良いだけでは?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2025-01-14T01:10:09+00:00

    こうなのかな?

    powershell -Command "&{Start-Job -ScriptBlock {Stop-VM PC1 -Force}}"
    
    色々なパターンで試してみた方が良いかも。
    

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2025-01-13T11:55:41+00:00

    PowerShell で

    Start-Job -ScriptBlock {Stop-VM PC1 -Force}
    

    でバックグラウンドジョブとして Stop-VM が実行できたということですか?

    そして

    コマンドプロンプトだと起動しません。とはコマンドプロンプトで

    powershell -Command Start-Job -ScriptBlock {Stop-VM PC1 -Force}
    では実行できないということですか?
    

    ⇒ご丁寧にありがとうございます。ご認識のとおりです。

    コマンドもありがとうございます。

    powershell -Command "Start-Job -ScriptBlock &{Stop-VM PC1 -Force}"
    を実行してみたとろ下記となりました。
    

    発生場所 行:1 文字:34

    •  -Command Start-Job -ScriptBlock &{Stop-VM PC1 -Force}
    •                              ~ 
      

    アンパサンド (&) 文字は許可されていません。& 演算子は、今後使用するために予約されています。アンパサンドを二重引用符で囲

    み ("&")、文字列の一部として渡してください。

    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException 
    
    + FullyQualifiedErrorId : AmpersandNotAllowed
    

    仮想マシンPC1、PC2、PC3があり、この3台を並列でシャットダウンする、且つコマンドプロンプトから行いたい。

    というのが目的なのですが中々うまくいきません。。。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. 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 件のコメント コメントはありません
  5. Anonymous
    2025-01-13T06:22:31+00:00

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

    コマンドプロンプトから

    powershell -Command

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

    この回答は役に立ちましたか?

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