Rufen Sie die Betriebssystemarchitektur remote über PowerShell ab

Rufen Sie die Betriebssystemarchitektur remote über PowerShell ab

Weiß jemand, wie man per PowerShell remote auf die Betriebssystemarchitektur von mehreren Windows-Hosts zugreift?

Antwort1

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

Sie leiten die Liste der Computernamen in diesen Befehl weiter, sodass $_ als jeder Computer in Ihrer Liste interpretiert wird.


Bearbeiten: Nach einigem Herumstöbern scheint es, dass dies sowohl unter 2003 als auch unter 2008 funktioniert.

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

Antwort2

Unter Windows XP/2003 und höher verfügt Win32_Processor über eine AddressWidth-Eigenschaft, die je nach Bedarf 32 oder 64 beträgt.

Es gibt eine WMI-Objektinstanz der Klasse Win32_Processor für jede CPU, die dem Geräte-Manager von Windows bekannt ist. Daher habe ich in der Vergangenheit normalerweise so etwas gemacht. Es ist VBScript, meine PowerShell ist Mist, aber Sie verstehen, was ich meine …

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

aktualisieren: in PowerShell übersetzt:

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

Antwort3

Vielleicht ein bisschen weniger ausgefallen, aber für diejenigen, die Remote-WMI nicht aktiviert haben, wäre eine etwas altmodische Methode:

$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..."}
    }
}

Oder so ähnlich. Der springende Punkt ist der Testpfad zu den Programmen (x86), der nur auf 64-Bit-Rechnern vorhanden ist.

Antwort4

Das funktioniert bei mir

PS > $env:processor_architecture
AMD64

PowerShell 32-Bit oder 64-Bit

verwandte Informationen