Obtenga la arquitectura del sistema operativo de forma remota a través de PowerShell

Obtenga la arquitectura del sistema operativo de forma remota a través de PowerShell

¿Alguien sabe cómo obtener la arquitectura del sistema operativo de forma remota desde varios hosts de Windows a través de PowerShell?

Respuesta1

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

Canalizará la lista de nombres de computadoras en este comando para que $_ se interprete como cada computadora en su lista.


Editar: después de investigar un poco, parece que esto funcionará tanto en 2003 como en 2008.

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

Respuesta2

Para Windows XP/2003 y versiones posteriores, Win32_Processor tiene una propiedad AddressWidth que será 32 o 64, según corresponda.

Hay 1 instancia de objeto WMI de clase Win32_Processor para cada CPU conocida por el Administrador de dispositivos de Windows, por lo que normalmente he hecho este tipo de cosas en el pasado. Es VBScript, mi PowerShell apesta, pero ya entiendes la idea...

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

actualizar: traducido a PowerShell:

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

Respuesta3

Quizás un poco menos sofisticado, pero para aquellos que no tienen habilitado WMI remoto, una forma un poco antigua sería:

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

O algo así. El quid de la cuestión es la ruta de prueba a los archivos de programa (x86), que solo está presente en máquinas de 64 bits.

Respuesta4

esto funciona para mi

PS > $env:processor_architecture
AMD64

PowerShell de 32 o 64 bits

información relacionada