我試圖讓遠程使用PowerShell多個服務器上的一個DLL的文件版本,並有寫服務器名稱,DLL版本,並以CSV或HTML dll文件位置報告。有些服務器是Win 2003和Win 2008.因此,該文件可能駐留在例如C:\ Program Files \ WinZip \ WZCAB.DLL或C:\ Program Files(x86)\ WinZip \ WZCAB.DLL中。該腳本會檢查一個位置,如果它不存在,它會檢查另一個位置,然後寫出來。誰能幫我嗎?得到的.dll文件版本
只是幾件事 - 該腳本將被用來訪問200多個服務器或虛擬機的2003年和2008年。2003年它需要PowerShell 2.0和2008年將適時啓用遠程處理。我想也許我需要利用WMI。我有兩個其他腳本利用WMI來獲取修補程序和重啓時間。我雖然嘗試使用Ravikanth腳本(再次感謝您),但在傳遞服務器的txt文件時出現以下錯誤 - 一個或多個計算機名稱無效。如果您嘗試傳遞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 Class的WMI方法。 – ravikanth