Power Shell を使用して、このコマンドを使用してパスが存在するかどうかを確認しました。powershell test-path "HKCU:\Software\Microsoft\Windows"をリモート マシンに拡張する方法を教えてください。リモート マシンでレジストリ パスをテストする場合の構文は何 ですか。それをテストするいくつかの方法を提案します。
4 に答える
ここで説明されているようにアクセスできます: http://powershell.com/cs/blogs/tips/archive/2011/02/15/accessing-registry-remote.aspx
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', 'server123')
$key = $reg.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
$key.GetSubKeyNames() | ForEach-Object {
$subkey = $key.OpenSubKey($_)
$i = @{}
$i.Name = $subkey.GetValue('DisplayName')
$i.Version = $subkey.GetValue('DisplayVersion')
New-Object PSObject -Property $i
$subkey.Close()
}
$key.Close()
$reg.Close()
別の方法は、PSRemoting を有効invoke-command
にしてリモート マシンで使用し、ローカル ボックスで実行するのと同じコマンドを効果的に実行することです。
リモート コンピューターの現在のユーザー ハイブには接続できません。リモート レジストリ モジュールを使用して、リモート サーバーの hklm ハイブにリモート キーが存在するかどうかを確認する例を次に示します。モジュールは codeplex にあります: psremoteregistry.codeplex.con
Test-RegKey -ComputerName server1 -Key software\microsoft\winows -Hive LocalNachine
Q&A の多くは 3 年以上前のものです。Powershell の新しいバージョンでは、この多くがクリーンアップされたに違いないと思います。そうは言っても、リモート コンピューターのレジストリをチェックするための直接的なコマンドはまだありません (私の知る限りでは)。これは機能します-.NET 4.6.2がインストールされているかどうかを確認します(ただし、他の回答よりも簡単ですか?)
invoke-command -computername <NetBiosName> -scriptblock {test-path -Path
"HKLM:\Software\Microsoft\.NetFramework\v4.0.30319\SKUs\.NetFramework,
Version=v4.6.2"}
また、スクリプトブロックの内容を *.ps1 ファイル ({} 内のすべて) に入れてから、次のコマンドで呼び出すこともできます: Invoke-Command -ComputerName NetBiosName -FilePath " FQLP "