透過PowerShell遠端取得作業系統架構

透過PowerShell遠端取得作業系統架構

有誰知道如何透過 PowerShell 從多個 Windows 主機遠端取得作業系統架構?

答案1

get-wmiobject win32_operatingsystem -computer $_ | select-object OSArchitecture

您將把電腦名稱清單透過管道傳輸到此命令中,以便 $_ 被解釋為清單中的每台電腦。


編輯:經過一番挖掘後,這似乎適用於 2003 年和 2008 年。

get-wmiobject win32_computersystem -computer $_ | select-object systemtype

答案2

對於 Windows XP/2003 及更高版本,Win32_Processor 具有一個 AddressWidth 屬性,該屬性為 32 或 64(視情況而定)。

對於 Windows 裝置管理員已知的每個 CPU,都有 1 個 Win32_Processor 類別的 WMI 物件實例,因此我過去通常會執行此類操作。這是 VBScript,我的 PowerShell 很糟糕,但你明白了...

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor WHERE AddressWidth='64'")
If colItems.Count = 0 Then
    strArch = "x86"
Else
    strArch = "x64"
End If

更新:翻譯成PowerShell:

If ($(Get-WmiObject -Query "SELECT * FROM Win32_Processor WHERE AddressWidth='64'")) {
    Write-Host "I'm x64"
} Else {
    Write-Host "I'm x86"
}

答案3

也許不太花哨,但對於那些沒有啟用遠端 WMI 的人來說,有點老式的方法是:

$compList = #<whatever you use to source your list of machines>
ForEach($comp in $compList){
    $testPath64 = '\\' + $comp + '\c$\Program Files (x86)'
    $testPath = '\\' + $comp + '\c$\Program Files'
    $arch = Test-Path $testPath64
    If($arch){Write-Host "$comp is x64"}
    Else{
        $arch = Test-Path $testPath
        If($arch){Write-Host "$comp is x86"}
        Else{Write-Host "No idea..."}
    }
}

或類似的東西。關鍵在於,程式檔案 (x86) 的測試路徑僅存在於 64 位元電腦上。

答案4

這對我有用

PS > $env:processor_architecture
AMD64

PowerShell 32 位或 64 位

相關內容