Hyper-V PowerShellの必須コマンド:その概要と使い方
Hyper-V 環境の管理は、困難な作業となる場合があります。そのため、一元的なコンソールから仮想インフラストラクチャを設定・制御するための強力な管理ツールが必要となります。Hyper-V では、グラフィカルユーザーインターフェイスに加え、PowerShell を使用したコマンドラインインターフェイスも Hyper-V 管理のために提供されています。
このブログ記事では、PowerShellの仕組み、仮想マシン(VM)のパフォーマンスを向上させるHyper-V PowerShellコマンド、そしてこのCLIツールがHyper-V管理のプロセスをいかに大幅に簡素化できるかについて解説します。
PowerShell とは何ですか?
PowerShell は、Microsoft が開発したタスクの自動化および構成管理フレームワークであり、.NET Framework および .NET Core を基盤としたコマンドラインシェルと、それに関連するスクリプト言語で構成されています。
cmdlet とも呼ばれる PowerShell コマンドは、単一の PowerShell スクリプト内で複数の cmdlet を組み合わせることで、さまざまなタスクを自動化するために使用できます。Microsoft は、基本的なタスクから複雑なタスクまで実行可能な 100 以上の主要な PowerShell コマンドを開発しています。
PowerShellにはどんなことができるのでしょうか?
PowerShell を使用すると、Hyper-V 管理者は、オペレーティングシステム(Linux、macOS、および Windows)や関連するプロセスを管理するタスクを迅速に自動化できます。GUI ツールとは異なり、PowerShell ではコマンドラインのみを使用してシステム全体を管理できます。
さらに、必要な Hyper-V PowerShell コマンドをテキストファイルに保存することもできます( .ps1 (拡張機能)を追加し、このスクリプトを実行して特定のタスクを実行します。さらに、タスク スケジューラを使用して、PowerShell スクリプトを指定した時間に実行するようにスケジュール設定することもできます。
PowerShell の開き方
Hyper-V で PowerShell を実行するには、いくつかの方法があります。PowerShell を利用するための簡単な方法は、Hyper-V サーバーに直接接続し、そこから PowerShell を起動することです。Hyper-V ホストにリモート接続するには、リモート デスクトップが有効になっていることを確認する必要があります。リモート デスクトップが有効になれば、リモート デスクトップ ユーティリティを使用して、通常の Windows Server GUI(グラフィカル ユーザー インターフェイス)と同様に、サーバーにリモート接続することができます。
GUIからPowerShellを開く
GUIベースのOSでPowerShellを開くには、次の手順に従ってください:
- クリックする必要があります
Startそして入力してくださいPowerShell検索バーに。 - PowerShell アイコンを右クリックし、[
Run as Administrator管理者権限でPowerShellを開くには。
コマンドラインからPowerShellを起動する
Windows Server Core または Hyper-V Server を実行している場合に PowerShell を実行するには、次の手順に従ってください:
- 種類
PowerShellコマンドプロンプトで入力し、Enter. - コマンドプロンプトウィンドウで、Windows PowerShell セッションが自動的に開始されます。その後、コマンドプロンプトに"PS"という接頭辞が付加され、Windows PowerShell セッションが開始されたことが示されます。
- PowerShell を起動したら、Hyper-V 専用の PowerShell コマンドを使用できます。これについては、この記事の後半で詳しく説明します。
リモート設定
Windows Server Core または Hyper-V Server でリモート デスクトップの設定を確認するには、 sconfig まだ起動していない場合はユーティリティを起動し、オプション7を使用して設定してください。また、Hyper-Vホストにリモート接続したら、オプション 15 ~へ Exit to Command Line.
そこに行けば、そこはごく普通の cmd.exe 環境――PowerShellではありません。PowerShell環境を起動するには、単に次のように入力してください powershell コマンドラインで。
リモート PowerShell
PowerShell を使用すれば、Hyper-V とリモートでやり取りすることも可能です。つまり、リモートデスクトップ接続を確立することなく、Hyper-V ホスト上で PowerShell コマンドをリモート実行できるということです。
Hyper-V 管理ツールがインストールされている管理用ワークステーションから、Hyper-V コマンドレットを実行できます。まず、これらのコマンドレット(cmdlets)を含む Hyper-V ツールをインストールする必要があります。
Install-WindowsFeature RSAT-Hyper-V-Tools
ツールの読み込みが完了したら、 -computername 以下のスクリーンショットのように、Hyper-V ホストを指すパラメータを指定します。ホスト名を get-vm PowerShell コマンドレット。
Hyper-V PowerShellの必須コマンド12選
Hyper-Vの管理を簡単かつスムーズに行える、効果的なPowerShellコマンドが数多く存在します。ここでは、さまざまなHyper-V PowerShellコマンドの使い方について見ていきましょう。
Get-Command
まずは、PowerShellに不慣れで、どのコマンドレットをどのように使えばよいか分からないユーザーにとって役立つ、Hyper-V PowerShellコマンドから見ていきましょう。次のコマンドを実行すると、 Get-Command このコマンドレットを使用すると、そのコンピューターにインストールされているすべてのコマンドレット(Windows PowerShell コマンド)、関数、およびエイリアスの完全な一覧を確認できます。
ただし、検索条件を絞り込み、特定の条件に一致するHyper-V PowerShellコマンドの一覧を取得したい場合は、 Get-Command *-VM VMの制御や設定を行うためのコマンド一覧を表示するコマンドレット。
~を変更することで VM パラメータを VHD…と入力すると、仮想ハードディスクの管理に使用されるコマンドレットの完全な一覧が表示されます。したがって、さまざまな検索条件を試して、必要な結果を得ることができます。
ヘルプを表示
使用するHyper-V PowerShellコマンドが決まったら、そのコマンドレットの詳細を確認できます。このために、Get-Helpコマンドレットを使用できます。たとえば、Get-VMコマンドレットの詳細を確認するには、次のように入力します。
Get-Help Get-VM
Get-VM
PowerShell の Get-VM コマンドを使用すると、1 つまたは複数の Hyper-V ホスト上で利用可能なすべての仮想マシンを確認できます。ローカルの Hyper-V ホスト上のすべての仮想マシンを確認するには、次のコマンドを実行します。 Get-VM PowerShell コマンドレット。
PowerShell 画面には、利用可能な仮想マシンの一覧が表示され、その名前、状態、CPU 使用率、割り当てメモリ、稼働時間、ステータス、バージョンなどが確認できます。
VMの起動
この特定の VMを起動する PowerShell コマンドレットを使用すると、仮想マシンを起動できます。このため、次の Hyper-V PowerShell コマンドを実行してください:
Start-VM -Name 'Windows Server 2016'
その結果、名前が Windows Server 2016 ローカルのHyper-Vホスト上で起動されます。 Get-VM コマンドレット。
さらに、このの修正版を使用することもできます。 Start-VM 名前がで始まるVMのみを起動するPowerShellコマンドレット Hyper-V:
Start-VM -Name Hyper-V*
ご覧の通り、名前が Hyper-V Server デスクトップ 正常に起動しました。しかし、別のVM(Hyper-V Server 2012) はすでに実行中であり、PowerShell からその旨の通知が表示されます。
VM停止
Stop-VM コマンドレットを使用すると、仮想マシンをシャットダウンまたは電源を切ることができます。この目的で、次のコマンドレットを実行できます。
Stop-VM -Name 'Windows Server 2016'
ご覧のとおり、選択したVMはゲストOSを通じて正常にシャットダウンされました。
もう1つの例として、名前が Hyper-V:
Stop-VM -Name Hyper-V* -TurnOff
仮想マシンが応答しなくなった場合は、強制的にシャットダウンすることができます。これを行うには、次の PowerShell コマンドレットを実行します。
Stop-VM -Name 'Windows Server 2016' -Force
強制シャットダウンは、物理マシンの電源を切るのと同様であるため、保存されていないアプリケーションデータが失われる可能性があることにご注意ください。この場合、データ損失を防ぐために、VMを保存しておくことをお勧めします。そのためには、 Save-VM cmdlet。これは、物理コンピュータの休止状態にする操作に相当します:
Save-VM -Name 'Windows Server 2016'
名前が Hyper-V、次のHyper-V PowerShellコマンドを実行します:
Get-VM -Name Hyper-V* | Save-VM
チェックポイント-VM
その Checkpoint-VM このコマンドレットを使用すると、 Hyper-V 仮想マシンのチェックポイント (Hyper-V スナップショットとも呼ばれます)。次のコマンドレットを実行して、名前を 更新1 特定のVMの(Windows Server 2016):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
仮想マシンが正常に作成されたことを確認するには、次のHyper-V PowerShellコマンドを実行してください:
Get-VMSnapshot -VMName 'Windows Server 2016'
一方、特定のHyper-Vスナップショットを削除したい場合は、 Remove-VMSnapshot コマンドレット。たとえば、名前が テスト、次のコマンドレットを実行する必要があります:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
上のスクリーンショットは、選択したHyper-Vスナップショットを削除する一連の手順を示しています。
テスト用VHD
このHyper-V PowerShellコマンドは、仮想ハードディスクファイルが実際に存在し、Hyper-Vの展開に使用できることを確認するためのものです。このコマンドレットは以下の通りです:
Test-VHD -Path C:Testing.vhd
VHDのパスが有効な場合、画面に次のような出力が表示されます:
PowerShell コマンドレットを使用した仮想ハードディスクの管理について詳しく知りたい場合は、当社のブログ記事をご覧ください。 Hyper-V の VHD および VHDX ファイルの取り扱いに関する基本.
Measure-VM
この Hyper-V PowerShell コマンドを使用すると、特定の仮想マシンのリソース使用状況データを収集できます。たとえば、次のコマンドレットを実行すると、名前の付いた仮想マシンの CPU 使用率、RAM 使用量、ディスク容量、およびネットワークトラフィックを確認できます。 Windows Server 2016:
Measure-VM -VMName 'Windows Server 2016'
なお、 Measure-VM このコマンドレットは、VMでリソースメータリングが有効になって初めて、必要なデータを報告できます。リソースメータリングを有効にするには、次のHyper-V PowerShellコマンドを使用します:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
他にも便利なPowerShellコマンドレットとして、 Get-VMNetworkAdapterこれにより、選択したVMの仮想ネットワークアダプターを特定できます。たとえば、すべてのVMおよび管理OSの仮想ネットワークアダプターを検索したい場合は、次のHyper-V PowerShellコマンドを実行します:
Get-VMNetworkAdapter –All
すべてが正常であれば、PowerShell コンソールに以下の情報が表示されます:
Hyper-V PowerShell コマンドを使用すると、Hyper-V のネットワークアダプタに対して、簡単なものから複雑なものまで、さまざまなタスクを実行できます。役立つコマンドレットに関するガイドをご覧ください 仮想ネットワークアダプタの管理と設定 Hyper-V 環境において。
VMバージョンの更新
PowerShell には、選択した VM のバージョンを更新できるコマンドレットがあります:
Update-VMVersion -Name 'TestVM'
Hyper-V PowerShell コマンドを実行した後、 テストVM 現在のVMバージョンに更新できます。
Get-Process
このHyper-V PowerShellコマンドを使用すると、ローカルコンピュータ上の現在のすべてのプロセスを確認できます。コマンドを実行した後、 Get-Process このコマンドレットを使用すると、画面に以下の情報が表示されます:
この表には、以下の情報が含まれています:
- そのプロセスが開いているハンドルの数
- そのプロセスが使用している非ページングメモリの量
- そのプロセスが使用しているページング可能なメモリの量
- プロセスのワーキングセットのサイズ
- そのプロセスが使用している仮想メモリの量
- すべてのプロセッサに割り当てられたプロセッサ時間の合計
- プロセスID
- プロセス名
検索を絞り込んで特定のプロセスを見つけるには、プロセス名またはIDを入力してください。たとえば、Microsoft Wordが現在どのように動作しているかを確認したい場合は、実行中のすべてのプロセスのリストを調べ、Microsoft Word(つまりWinWord)に関する情報(プロセスIDを含む)が記載された行を見つけます。プロセスIDを使用すると、次のコマンドレットを実行して必要なデータを取得できます:
Get-Process -ID 8892
さらに、現在の WinWord プロセスに関するデータは、別の形式、つまりプロパティの一覧として表示することもできます。より詳細な出力を得るには、次のコマンドレットを実行してください:
Get-Process WINWORD | Format-List *
プロセスデータを取得したら、次のコマンドレットを実行できます:
Stop-Process実行中のプロセスを1つ以上停止することができます。Wait-Processこれにより、1つまたは複数の実行中のプロセスが停止するまで待機し、その後で他の入力を有効にすることができます。Start-Processローカルコンピュータ上で1つまたは複数のプロセスを開始することができます。Debug-Processローカルコンピュータ上で実行中の1つまたは複数のプロセスにデバッガーを接続することができます。
たとえば、もし メモ帳 PowerShellから実行する場合は、次のコマンドレットを実行してください:
Start-Process -FilePath "notepad.exe"
もう1つの例として、"通常"モードでPowerShellを開いているものの、管理者権限を取得するために昇格モードでPowerShellを実行する必要がある場合が挙げられます。そのような場合は、次のHyper-V PowerShellコマンドを実行してください:
Start-Process -FilePath "powershell" -Verb RunAs
一方、実行中のプロセスのいずれかが応答しなくなった場合は、 Stop-Process 障害が発生したアプリケーションを停止するコマンドレット:
Stop-Process -Name "notepad"
この場合、ローカル コンピュータ上のすべての"メモ帳"アプリケーションのインスタンスが停止されます。
各"メモ帳"インスタンスには固有のプロセス ID があります。特定の"メモ帳"インスタンスを停止したい場合は、Stop-Process コマンドレットの ID パラメーターを使用する必要があります。そのためには、まず Get-Process コマンドレットを使用して、必要なアクティブなプロセスを検索し、停止したいプロセスのプロセスIDを特定します。
たとえば、特定のメモ帳プロセスのプロセスIDを特定し、次のHyper-V PowerShellコマンドを実行することで、そのプロセスを停止できます。
Stop-Process -ID 5052
その結果、選択されたメモ帳のプロセスだけが停止されます。
これらのPowerShellコマンドを使用すると、不要なリソースを消費してHyper-Vのパフォーマンスを低下させているプロセスを特定し、そのプロセスを終了させることができます。
Where-Object
この Hyper-V PowerShell コマンドを使用すると、パイプラインのオブジェクトをフィルタリングして、必要なデータを正確に特定することができます。この場合、パイプラインを通じて渡すオブジェクトを指定する PowerShell スクリプトを作成する必要があります。さまざまな検索条件を使用することで、ローカル コンピュータ上の任意のオブジェクトを検索できます。
たとえば、実行が停止したプロセスを特定したい場合は、次のコマンドレットを使用します。
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
この機能の使用例としては、他にも Where-Object 特定のコマンドレットを検索したい場合に、cmdlet を使用します。次の Hyper-V PowerShell コマンドを使用すると、で始まるすべてのコマンドレットを検索できます。 待って:
Get-Command | Where-Object {$_.Name -like '*wait*'}
次は Where-Object このコマンドレットを使用すると、名前だけで特定のプロセスを見つけることができます。次のコマンドを実行すると、名前が sys:
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
PowerShell を使用して Hyper-V 仮想マシンを作成する方法
Hyper-V の強力な組み込み機能の一つに、管理操作に PowerShell を使用できる点が挙げられます。Hyper-V の PowerShell ではさまざまな操作が可能ですが、その中には仮想マシンの作成も含まれます。ここでは、新しい仮想マシンを作成するための Hyper-V PowerShell コマンドについて見ていきましょう。
新しい仮想マシンを作成するためのPowerShellコマンド
新しい60 GBのVHDXハードディスクを搭載した第2世代VMを作成し、それを特定の 仮想スイッチ (この場合、"外部スイッチ")、Hyper-V ホストで次の PowerShell コマンドを実行してください。
-
仮想マシンの作成:
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch" -
起動用のISOイメージとともにDVDドライブを追加するには、以下のコマンドを実行します:
Add-vmscsicontroller -vmname WSTESTAdd-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso -
固定サイズのディスクを作成してVMに接続したい場合は、以下のコマンドを実行して固定サイズのVHDXを作成し、VMに接続することができます:
new-vhd -path "d:hyper-vvirtual hard disks.wstest.vhdx" -sizebytes 60GB -fixedadd-vmharddiskdrive -vmname WSTEST -path "d:hyper-vvirtual hard diskswstest.vhdx"
結論
PowerShellは最初は難しそうに思えるかもしれませんが、使い方を一度覚えれば、Hyper-VのPowerShellコマンドの活用方法をすぐに習得し、Hyper-V環境の管理を効率化できるようになります。ただし、VMの管理にどのようなツールを使用する場合でも、データの損失やシステム停止を防ぐために、必ずバックアップを作成しておく必要があることを忘れないでください。
NAKIVO Backup & Replication 信頼性が高く強力なデータ保護ソリューションであり、VMware、Hyper-V、Nutanix、AWS EC2、Linux、Windows、およびMicrosoft 365環境の保護を支援します。


























