Получите архитектуру ОС удаленно через PowerShell

Я не знаю ни о каких двухпортовых платах PCMCIA, но Вы могли использовать единственную плату портов и usb адаптер Ethernet, предполагая, что Ваша ОС поддерживает тот.

1
задан 15 October 2012 в 16:17
4 ответа

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

Вы передадите список имен компьютеров в эту команду так, чтобы $ _ интерпретировался как каждый компьютер в вашем списке.


Редактировать: После некоторого покопания выяснилось, что это будет работать на обоих 2003 и 2008 гг.

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

4
ответ дан 3 December 2019 в 17:11

Для Windows XP / 2003 и выше Win32_Processor имеет свойство AddressWidth, которое будет иметь значение 32 или 64, в зависимости от ситуации.

Существует 1 экземпляр объекта WMI класса Win32_Processor для каждого процессора, известного Windows «Диспетчер устройств», поэтому я обычно делал такие вещи в прошлом. Это 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

update : переведено на PowerShell:

If ($(Get-WmiObject -Query "SELECT * FROM Win32_Processor WHERE AddressWidth='64'")) {
    Write-Host "I'm x64"
} Else {
    Write-Host "I'm x86"
}
2
ответ дан 3 December 2019 в 17:11

У меня это работает

PS > $env:processor_architecture
AMD64

32-разрядная или 64-разрядная версия PowerShell

-1
ответ дан 3 December 2019 в 17:11

Может быть, немного менее навороченный, но для тех, у кого не включен удаленный 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-битных машинах.

0
ответ дан 3 December 2019 в 17:11

Теги

Похожие вопросы