Powershellを使用してリモートで複数のサーバ上でファイルバージョンのdllを取得しようとしていて、サーバ名、dllバージョン、およびdllファイルの場所をcsvまたはhtml報告する。このキャッチは、Windows 2003およびWindows 2008の一部です。そのため、ファイルはC:¥Program Files¥WinZip¥WZCAB.DLLやC:¥Program Files(x86)¥WinZip¥WZCAB.DLLなどにあります。スクリプトはある場所をチェックし、存在しなければ他の場所をチェックして書き出します。誰か助けてくれますか?リモートコンピュータからpowershellの.dllのファイルバージョンを取得する
このスクリプトは、200以上のサーバーまたはVMの2003年と2008年の両方にアクセスするために使用されます。2003年にはPowershell 2.0と2008が必要です。リモート処理を有効にするのがタイムリーになります。多分私はWMIを利用する必要があると思っていました。 WMIを利用してパッチを取得し、再起動する2つのスクリプトがあります。私はRavikanthスクリプト(もう一度ありがとう)を試してみましたが、サーバーのtxtファイルを渡すときに次のエラーが発生しました - 1つ以上のコンピュータ名が有効ではありません。 Uriを渡そうとする場合は、-ConnectionUriパラメータを使用するか、文字列ではなくUriオブジェクトを渡します。私は各サーバーでリモーティングを有効にする予定ではないので、これを行う別の方法はありますか?私はRavikanthスクリプト(下記)を修正し、ローカルで試してみました。遠隔操作しようとしたら、それはしません。何かご意見は?
$servers = "D:\scripts\winzip\servers.txt"
$x86Path = 'C:\Program Files (x86)\WinZip\WZCAB.DLL'
$x64Path = 'C:\Program Files\WinZip\WZCAB.DLL'
foreach ($computername in $servers){
if (Test-Path $x86Path) {
(Get-Item $x86Path | Select -ExpandProperty VersionInfo).FileVersion
} elseif (Test-Path $x64Path) {
(Get-Item $x64Path | Select -ExpandProperty VersionInfo).FileVersion
}
}
クイックレスポンスのおかげで.. – user1086732
あなたは本当にどのリモートサーバにもアクセスしません。実際には、配列としてservers.txtの内容を読み込んでいる間は、コレクションを繰り返すことさえありません。 CIM_DataFile WMIクラスを使用してこれを行うWMIの方法があります。 – ravikanth