Windows PowerShell には、リモート コンピューター上の Windows Management Instrumentation (WMI) に接続するための簡単なメカニズムが用意されています。 WMI のリモート接続は、Windows ファイアウォールの、DCOM 設定、ユーザー アカウント制御 (UAC)の影響を受けます。 リモート接続の構成の詳細については、「Windows Vistaを使用した WMI リモート接続の開始」を参照してください。
このトピックの例は、リモート コンピューター 上の WMI への接続の VBScript に基づいています。 このトピックのすべての例では、Get-WmiObject コマンドレットを使用します。 詳細については、「Get-WmiObject」を参照してください。
Windows PowerShell の例
リモート コンピューターへの接続を作成するときに、ユーザーはリモート コンピューター名、資格情報、接続の認証レベルなどの接続情報を指定できます。 次の例は、さまざまな資格情報セットを使用してリモート コンピューターに接続する方法と、WMI 情報にアクセスする方法を示しています。
次の Windows PowerShell の例は、偽装レベルの設定を示しています。
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B
前の例では、ユーザーはログオンしたのと同じ資格情報 (ドメインとユーザー名) を使用してリモート コンピューターに接続します。 また、ユーザーは偽装の使用を要求しました。 元の VBScript の例とは異なり、偽装レベルは "偽装" プロパティによって設定されるため、モニカー文字列は必要ありません。 既定では、偽装レベルは 3 (偽装) に設定されています。
この例では、リモート コンピューターで実行されている Win32_Process クラスのすべてのインスタンスを一覧表示します。
手記
既定の名前空間が異なるコンピューターで同じでない可能性があるため、リモート コンピューターで接続する WMI 名前空間を指定する必要があります。
次の Windows PowerShell の例は、異なる資格情報を持つリモート コンピューターに接続し、偽装レベルを 3 (偽装) に設定する方法を示しています。
$Computer = "atl-dc-01"
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer
前の例では、コンピューター名が $Computer 変数に割り当てられました。 ユーザーは、特定の資格情報 (ドメインとユーザー名) を使用してリモート コンピューターに接続し、認証レベルの偽装を要求します。
手記
重大なアクセント記号 (') は、改行を示すために使用されます。 VBScript のアンダースコア文字 (_) と同じです。
次の Windows PowerShell の例では、リモート コンピューター名の配列を作成し、プラグ アンド プレイ デバイスの名前 (Win32_PnPEntityのインスタンス) を各コンピューターに表示することで、同じドメイン内のリモート コンピューターのグループに接続します。
$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers)
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="
write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"
$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}
手記
上記の Windows PowerShell スクリプトを実行するには、リモート コンピューターの管理者である必要があります。 また、前の例に関連して、次の点に注意してください。
- 配列内のコンピューター名は文字列であるため、引用符で囲む必要があります。
- Get-WmiObject によって返されるオブジェクトは、$ColItems変数に割り当てられます。
- 範囲演算子 [] は、プラグ アンド プレイ デバイスの一覧を 48 インスタンスに制限しました。 詳細については、About_Operatorsを参照してください。
- "|" はパイプライン文字です。 ColItems によって返されるオブジェクトは、Format-List コマンドレットに送信されます。
次の Windows PowerShell の例では、別のドメイン上のリモート コンピューターに接続できます。 この例では、リモート コンピューター上の Win32_Process のインスタンスのプロセス名も表示します。
$Computer = "FullComputerName"
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2" -ComputerName $Computer
foreach ($ObjItem in $colItems)
{
write-host "Process Name:" $ObjItem.name
}
手記
上記の Windows PowerShell スクリプトを実行するには、リモート コンピューターの管理者である必要があります。
前の例では、ユーザーは別のドメイン上のリモート コンピューターに接続し、優先ロケールを指定します。 Get-Credential コマンドは、ユーザーの資格情報を要求し、その資格情報をオブジェクトに割り当てます。 この例では、コンピューターで実行されている Win32_Process クラスのインスタンスの名前も一覧表示します。
関連トピック