どこから取得しようとしているかによって、なぜ異なる情報があるのか混乱しています。 Hyper-Vを実行している3つのWindows2012サーバー(G0、G1、およびG2)があります。次の状況は、スクリプトを実行して他のサーバーを制御するために使用する1つのサーバーからキャプチャされます。
私がやろうとしているのは、これら3台のマシンに存在する仮想マシンのリストを取得することです。
PowerGUI
およびPowerShell ISE
:を使用
PS > Get-VMHost | select name
Name
----
G0.nothing.com
G2.nothing.com
G1.nothing.com
PS > Get-VMHost | Get-VM | select name
Name
----
VM1628856-4
VM1628856-2
VM1628856-6
VM1628856-3
VM1628856-1
VM1628856-5
PowerShell
:を使用
PS > Get-VMHost | select name
Name
----
G0
PS > Get-VM
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
VM1107610-1 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1390728-1 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-1 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-10 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-2 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-3 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-4 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-5 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-6 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-7 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-8 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1393540-9 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
VM1833022-1 OffCritical 0 0 00:00:00 Cannot connect to virtual machine configuration storage
私の主な懸念は、3つのツールからの信頼できる情報がないことです。 Hyper-V Manager
アプリケーションは、PowerShell
と同じリストを表示します。しかし、他の2つのツールからスクリプトを実行する場合、これは私が主に行うことですが、同じ情報を利用できないため、同じVMを操作することはできません。
また、Virtual Machine Manager
には、最初の2つのツールであるPowerGUIとPowerShellISEと同じVMのリストが表示されていることにも気づきました。
どの情報が有効ですか?また、VMの正しいリストを取得するにはどうすればよいですか?
$env:psmodulepath
値:
PS > $env:psmodulepath
C:\Users\administrator\Documents\WindowsPowerShell\Modules;
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\;
C:\Program Files\Microsoft System Center 2012\Virtual Machine Manager\bin\Configuration Providers\;
C:\Program Files\Microsoft System Center 2012\Virtual Machine Manager\bin\psModules\;
C:\Program Files (x86)\QLogic Corporation\QInstaller\Modules
PowerShell
はこのHyper-V
モジュールを使用しています:C:\ Windows\Microsoft.Net\Assembly\GAC_MSIL\Microsoft.HyperV.PowerShell\v4.0_6.3.0。 0__31bf3856ad364e35\Microsoft.HyperV.PowerShell.dll
そして、PowerGUI
はこれを使用しています:C:\ Windows\System32\WindowsPowerShell\v1.0\Modules\Hyper-V\Hyper-V.psd1
PowerShell
が使用するモジュールをPowerGUI
にロードしようとすると、同じ異なる結果が得られます。
PowerGUI
またはHyper-V
を使用して、PowerShell ISE
にリストされている正しい情報を受け取るにはどうすればよいですか?
2つの異なるHyper-VPowerShellモジュールを使用していると思います。
NAME
Get-VMHost
SYNOPSIS
Lists Hyper-V servers registered with Active Directory.
これは pshyperv.codeplex.com のGet-VMhostコマンドレットであり、複数のHyper-Vホスト(ケース3)が一覧表示されます。
NAME
Get-VMHost
SYNOPSIS
Gets a Hyper-V Host.
これは、サーバー2012+上のHyper-V 3に付属するGet-VMhostコマンドレットであり、特定の1つのホストに関する情報を一覧表示するだけで、複数のホストを一覧表示することはありません。
両方のモジュールがロードされている場合、ISEはこれらのモジュールでPoweShellとは異なる設定を選択しているようです。
2012年に組み込みのコマンドレットがある場合、サードパーティのコマンドレットは使用しません。混乱を招くだけで、確かに混乱します。
あなたの$env:psmodulepath
の価値は何ですか?
ピーターは正しい方向に進んでいるようです。やってみました:
このコマンドを使用して、コマンドが正しいモジュールから使用されていることを確認します。
Get-Module (get-command Get-VMHost).ModuleName | select Name, Path
または、インポートされたモジュールを確認した後、完全修飾名を使用します。
Hyper-V\Get-VMHost "hyperv01svr"