通过 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,都有一个 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..."}
    }
}

或者类似的东西。关键在于,Program Files (x86) 的测试路径仅存在于 64 位机器上。

答案4

这对我有用

PS > $env:processor_architecture
AMD64

PowerShell 32 位或 64 位

相关内容