必須のHyper-V PowerShellコマンド:それらの使い方とは

Hyper-V環境を管理することは困難な作業です。したがって、仮想インフラストラクチャを中央コンソールから設定および制御するための強力な管理ツールが必要です。Hyper-Vには、グラフィカルユーザーインターフェイスに加えて、PowerShellを使用したコマンドラインインターフェイスも提供されています。

このブログ記事では、PowerShellの動作方法、仮想マシン(VM)のパフォーマンスを向上させるためのHyper-V PowerShellコマンド、およびこのCLIツールがHyper-V管理のプロセスを大幅に簡素化できる方法について説明します。

PowerShellとは何ですか?

PowerShellは、マイクロソフトが開発したタスクの自動化および構成管理フレームワークであり、.NET Frameworkおよび.NET Coreをベースにしたコマンドラインシェルおよび関連するスクリプト言語を含んでいます。

PowerShellコマンドは、複数のコマンドレットを単一のPowerShellスクリプトに配置することで、さまざまなタスクを自動化するために使用できます。マイクロソフトは、複雑なタスクおよび基本的なタスクを実行するために使用できる100以上のコアPowerShellコマンドを開発しています。

PowerShellは何ができるのですか?

PowerShellを使用すると、Hyper-V管理者はオペレーティングシステム(Linux、macOS、Windows)および関連プロセスを管理するタスクを迅速に自動化できます。GUIツールとは異なり、PowerShellを使用するとコマンドラインのみでシステム全体を管理できます。

さらに、必要なHyper-V PowerShellコマンドをテキストファイル(.ps1拡張子)に保存し、このスクリプトを実行して特定のタスクを実行することができます。さらに、タスクスケジューラを使用して、特定の時間にPowerShellスクリプトを実行することもできます。

PowerShellを開く方法

PowerShellをHyper-Vで実行する方法はいくつかあります。PowerShellにアクセスする簡単な方法は、直接Hyper-Vサーバーに接続してそこから起動することです。Hyper-Vホストにリモートで接続するためには、リモートデスクトップが有効になっていることを確認する必要があります。リモートデスクトップが有効になったら、リモートデスクトップユーティリティを使用して通常のWindows Server GUIと同様にサーバーにリモートで接続することができます。

GUIからPowerShellを開く

GUIベースのOSでPowerShellを開くには、以下の手順に従ってください:

  1. スタートをクリックし、検索バーにPowerShellと入力します。
  2. PowerShellのアイコンを右クリックし、管理者として実行を選択して昇格モードでPowerShellを開きます。

コマンドラインからPowerShellを開く

Windows Server CoreまたはHyper-V Serverを実行している場合、以下の手順に従ってPowerShellを実行します:

  1. コマンドプロンプトにPowerShellと入力し、Enterキーを押します。
  2. A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
  3. PowerShellに入ったら、この投稿の後半で説明するHyper-V固有のPowerShellコマンドを使用することができます。

リモート設定

Windows Server CoreまたはHyper-V Serverでリモートデスクトップの設定を確認するには、すでに起動していない場合はsconfigユーティリティを起動し、オプション7を使用して設定します。また、Hyper-Vホストにリモートで接続した後は、オプション15を使用してコマンドラインに戻ることができます。

一度そこにいると、通常のcmd.exe環境にいます- PowerShellではありません。 PowerShell環境を起動するには、単にコマンドラインにpowershellと入力します。

リモートPowerShell

PowerShellを使用して、Hyper-Vともリモートで対話できます。つまり、リモートデスクトップ接続を確立せずにHyper-VホストでPowerShellコマンドをリモートで実行できます。

Hyper-V管理ツールがロードされている管理ワークステーションから、Hyper-Vコマンドレットを実行できます。まず、これらのコマンドレット(cmdlet)を含むHyper-Vツールをインストールする必要があります。

Install-WindowsFeature RSAT-Hyper-V-Tools

ツールをロードしたら、スクリーンショットのように、-computernameパラメーターを使用してHyper-Vホストを指すget-vmPowerShellコマンドレットを実行できます。ホストの名前を渡します。

12の必須Hyper-V PowerShellコマンド

Hyper-Vを管理するプロセスを簡単かつシンプルにする効果的なHyper-V PowerShellコマンドがいくつかあります。異なるHyper-V PowerShellコマンドをどのように使用できるかを見てみましょう。

Get-Command

PowerShell初心者やどのコマンドレットを使用すべきかわからないユーザー向けに役立つHyper-V PowerShellコマンドから始めましょう。 Get-Commandコマンドレットを実行することで、コンピューターにインストールされているすべての利用可能なコマンドレット(Windows PowerShellコマンド)、関数、およびエイリアスの完全なリストを確認できます。

ただし、特定の基準に一致するHyper-V PowerShellコマンドのリストを取得したい場合は、

VMパラメータをVHDに変更することで、仮想ハードディスクを管理するために使用されるコマンドレットの完全なリストを取得できます。したがって、必要な結果を得るためにさまざまな検索パラメータを試すことができます。

Get-Help

Hyper-V PowerShellコマンドを選択したら、そのコマンドレットについて詳しく学ぶことができます。この目的のために、Get-Helpコマンドレットを使用できます。たとえば、Get-VMコマンドレットについて詳細を確認するには、次のように入力します:

Get-Help Get-VM

Get-VM

Get-VM PowerShellコマンドを使用すると、1つ以上のHyper-Vホスト上で利用可能なすべてのVMを表示できます。ローカルHyper-Vホスト上のすべてのVMを表示するには、Get-VM PowerShellコマンドレットを実行する必要があります。

PowerShell画面では、名前、状態、CPU使用率、割り当てられたメモリ、稼働時間、ステータス、およびバージョンを含む利用可能なVMのリストが表示されます。

Start-VM

この特定のstart VM PowerShellコマンドレットは、VMを起動するのに役立ちます。この目的のために、次のHyper-V PowerShellコマンドを実行します:

Start-VM -Name 'Windows Server 2016'

その結果、ローカルのHyper-VホストでWindows Server 2016という名前のVMが起動されます。実際にVMが起動したかどうかを確認するために、Get-VMコマンドレットを実行してみましょう。

修正されたStart-VM PowerShellコマンドレットを使用して、名前がHyper-Vで始まる場合にのみVMを起動できます:

Start-VM -Name Hyper-V*

ご覧の通り、Hyper-V Server Desktopという名前のVMが正常に起動しました。しかし、別のVM (Hyper-V Server 2012) が既に実行中であり、PowerShellがこれを通知しています。

Stop-VM

Stop-VMコマンドレットを使用すると、VMをシャットダウンまたはオフにすることができます。この目的のために、次のコマンドレットを実行できます:

Stop-VM -Name 'Windows Server 2016'

選択したVMが、ゲストOSを介して正常にシャットダウンされたことがわかります。

別の例は、名前がHyper-Vで始まるVMをオフにできることです:

Stop-VM -Name Hyper-V* -TurnOff

VMが応答しない場合は、強制的にシャットダウンすることができます。これを行うには、次のPowerShellコマンドレットを実行します:

Stop-VM -Name 'Windows Server 2016' -Force

強制的なシャットダウンは物理マシンの電源を切るのと同様であり、保存されていないアプリケーションデータの損失を引き起こす可能性があります。この場合、データの損失を避けるために、VMを保存することが推奨されます。この目的のために、Save-VMコマンドレットを実行する必要があります。これは物理コンピューターを休止状態にするのと同等です:

Save-VM -Name 'Windows Server 2016'

Hyper-Vで始まるVMを保存したい場合は、次のHyper-V PowerShellコマンドを実行してください:

Get-VM -Name Hyper-V* | Save-VM

Checkpoint-VM

Checkpoint-VMコマンドレットを使用すると、Hyper-V VMチェックポイント(またはHyper-Vスナップショット)を作成できます。以下のコマンドレットを実行して、特定のVM(Windows Server 2016)の名前がUpdate1のチェックポイントを作成します:

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

VMが正常に作成されたことを確認するには、次のHyper-V PowerShellコマンドを使用します:

Get-VMSnapshot -VMName 'Windows Server 2016'

一方、特定のHyper-Vスナップショットを削除したい場合は、Remove-VMSnapshotコマンドレットを使用します。たとえば、名前がTestingで始まるすべてのVMスナップショットを削除する場合、次のコマンドレットを実行します:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

上記のスクリーンショットは、選択したHyper-Vスナップショットを削除する全体的なプロセスを示しています。

Test-VHD

このHyper-V PowerShellコマンドは、仮想ハードディスクファイルが実際に存在し、Hyper-V展開に使用できることを確認するために使用されます。このコマンドレットは次のとおりです:

Test-VHD -Path C:\Testing.vhd

VHDパスが有効な場合、画面には次の出力が表示されます:

仮想ハードディスクを管理するためのPowerShellコマンドレットの使用方法について詳しく学びたい場合は、当社のブログ記事を読むことをお勧めします。Hyper-V VHDおよびVHDXファイルの基本に関する記事です。

このHyper-V PowerShellコマンドは、特定のVMのリソース利用状況データを収集することができます。例えば、次のコマンドレットを実行して、Windows Server 2016という名前のVMのCPU使用率、RAM使用率、ディスク容量、およびネットワークトラフィックについて学ぶことができます:

Measure-VM -VMName 'Windows Server 2016'

必要なデータを報告するには、Measure-VMコマンドレットはVM上のリソースメータリングが有効になっている必要があります。リソースメータリングを有効にするには、次のHyper-V PowerShellコマンドを使用します:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

もう1つの便利なPowerShellコマンドレットはGet-VMNetworkAdapterです。これにより、選択したVMの仮想ネットワークアダプタを特定できます。例えば、すべてのVMおよび管理OSから仮想ネットワークアダプタを見つけたい場合は、次のHyper-V PowerShellコマンドを実行する必要があります:

Get-VMNetworkAdapter –All

すべてが正しい場合、PowerShellコンソールに次の情報が表示されるはずです。

Hyper-V PowerShellコマンドを使用すると、Hyper-Vのネットワークアダプタを管理および設定するためのさまざまな単純なおよび複雑なタスクを実行できます。Hyper-V環境で仮想ネットワークアダプタを管理および設定するのに役立つコマンドレットに関するガイドをご覧ください。

Update-VMVersion

PowerShellには、選択したVMのバージョンを更新することができるコマンドレットがあります。

Update-VMVersion -Name 'TestVM'

Hyper-V PowerShellコマンドを実行した後、VMの名前が「TestVM」のVMを現在のVMバージョンに更新することができます。

Get-Process

このHyper-V PowerShellコマンドは、ローカルコンピュータ上の現在のプロセスをすべて表示するのに役立ちます。Get-Processコマンドレットを実行すると、次の情報を画面に表示できます:

このテーブルには、次の情報が含まれています:

  • プロセスが開いているハンドルの数
  • プロセスが使用しているノンページドメモリの量
  • プロセスが使用しているページ可能なメモリの量
  • プロセスのワーキングセットのサイズ
  • プロセスが使用している仮想メモリの量
  • すべてのプロセッサに割り当てられたプロセッサ時間の量
  • プロセスID
  • プロセス名

検索範囲を絞り込み、特定のプロセスを見つけるには、プロセス名またはIDを入力する必要があります。たとえば、Microsoft Wordの現在の動作を学びたい場合は、すべての実行中のプロセスのリストを確認し、Microsoft Word(つまりWinWord)の情報が含まれている行を見つける必要があります。プロセスIDを使用して、次のコマンドレットを実行して必要なデータを取得できます:

Get-Process -ID 8892

さらに、現在のWinWordプロセスに関するデータは別の形式で表示できます。つまり、プロパティのリストとして。詳細な出力を取得するには、このコマンドレットを実行します:

Get-Process WINWORD | Format-List *

プロセスデータを手に入れた後、次のコマンドレットを実行できます:

  • Stop-Processは、1つ以上の実行中のプロセスを停止できます。
  • Wait-Processは、他の入力を有効にする前に、1つ以上の実行中のプロセスが停止するのを待つことができます。
  • Start-Processは、ローカルコンピューターで1つ以上のプロセスを開始できます。
  • Debug-Processは、ローカルコンピューターで1つ以上の実行中のプロセスにデバッガをアタッチできます。

たとえば、PowerShellからNotepadアプリケーションを起動したい場合は、次のコマンドレットを実行します:

Start-Process -FilePath "notepad.exe"

Start-Process -FilePath "powershell" -Verb RunAs

Stop-Process コマンドレットを使用すると、失敗したアプリケーションを停止できます:

Stop-Process -Name "notepad"

この場合、ローカル コンピューター上の Notepad アプリケーションのすべてのインスタンスが停止されます。

各 Notepad インスタンスには、独自のプロセス ID があります。特定の Notepad インスタンスを停止する場合は、Get-Process コマンドレットを使用して、必要なアクティブなプロセスを見つけ、停止するプロセス ID を特定する必要があります。

たとえば、次の Hyper-V PowerShell コマンドを使用して特定の Notepad プロセスを停止できます:

Stop-Process -ID 5052

結果、選択した Notepad プロセスだけが停止されます。

これらの PowerShell コマンドを使用すると、パフォーマンスを低下させているプロセスを検出し、そのプロセスを終了できます。

Where-Object

この Hyper-V PowerShell コマンドは、パイプラインオブジェクトをフィルタリングし、必要な正確なデータを見つけることを可能にします。この場合、パイプラインを通過できるオブジェクトを指定する PowerShell スクリプトを作成する必要があります。さまざまな検索基準を使用して、ローカルコンピューター上の任意のオブジェクトを見つけることができます。

たとえば、実行が停止したプロセスを特定したい場合は、次のコマンドレットを使用します:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

Where-Object コマンドレットを使用する別の例は、特定のコマンドレットを見つけたい場合です。次の Hyper-V PowerShell コマンドを使用すると、Wait で始まるすべてのコマンドレットを見つけることができます:

Get-Command | Where-Object {$_.Name -like '*wait*'}

次の Where-Object コマンドレットを使用すると、名前だけで特定のプロセスを見つけることができます。次のコマンドを実行すると、sys で始まるすべてのプロセスのリストを取得できます:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

PowerShell を使用して Hyper-V VM を作成する方法

Hyper-V の強力な組み込み機能の1つは、管理操作に PowerShell を使用できるようにすることです。Hyper-V で PowerShell を使用して行うことの1つは、仮想マシンを作成することです。新しい VM を作成するための一連の Hyper-V PowerShell コマンドを見てみましょう。

新しい VM を作成するための PowerShell コマンド

新しい第2世代のVMを作成し、新しい60 GBのVHDXハードディスクを接続し、特定の仮想スイッチ(この場合、「ExternalSwitch」)に接続するには、次のPowerShellコマンドをHyper-Vホストで実行します。

  1. VMを作成する:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtualhard disks\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. DVDドライブとブート用のISOイメージを追加するには、追加のコマンドを実行できます:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\my.iso

  3. 固定サイズのディスクを作成し、それをVMにアタッチする場合、次のコマンドを実行します:

    new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed

    add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"

結論

PowerShellは最初は難しく感じるかもしれませんが、一度使い方を学習すれば、Hyper-V PowerShellコマンドの使い方をすぐに発見し、Hyper-V環境で管理を効率化することができます。ただし、VMを管理する際には、データ損失やダウンタイムを避けるためにバックアップを作成する必要があることを忘れないでください。

NAKIVO Backup & Replicationは、VMware、Hyper-V、Nutanix、AWS EC2、Linux、Windows、Microsoft 365環境を保護するのに役立つ信頼性の高い強力なデータ保護ソリューションです。

Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/