複数のサーバーでPowershellを使用してdllのファイルバージョンをリモートで取得しようとしており、サーバー名、dllバージョン、およびdllファイルの場所をcsvまたはhtmlレポートに書き込んでいます。問題は、一部のサーバーが Win 2003 および Win 2008 であることです。したがって、ファイルは、たとえば C:\Program Files\WinZip\WZCAB.DLL または C:\Program Files (x86)\WinZip\WZCAB.DLL に存在する可能性があります。スクリプトは 1 つの場所をチェックし、存在しない場合は別の場所をチェックしてから書き出します。誰でも私を助けることができますか?
いくつかのこと - このスクリプトは、2003 と 2008 の両方で 200 以上のサーバーまたは VM にアクセスするために使用されます。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
}
}