Como detectar cada sistema operacional Windows é usado com o powershell

1

Gostaria de verificar qual versão do windows é usada em uma máquina remota, estou usando este comando:

$version=[Environment]::OSVersion.Version | % {"{0}.{1}.{2}" -f $_.Major,$_.Minor,$_.Build}

Eu obtenho o resultado por exemplo windows 7: 6.1.7600

mas encontrei um problema:

O servidor do Windows 2012 R2 tem: 6.1.9600

e windows 8.1 também: 6.1.9600

estou pensando se há outra solução para obter a versão do Windows?

    
por Hkm Mahjoub 01.06.2016 / 13:32

2 respostas

2

Outra solução seria obter a legenda por meio do WMI. Eu acho que é o mais próximo do que você quer. Pode ser usado para verificar máquinas locais e remotas.

Local:

(gwmi win32_operatingsystem).caption

Exemplo de saída:

PS C:\WINDOWS\system32> (gwmi win32_operatingsystem).caption
Microsoft Windows 10 Pro

Remoto:

Adicione o parâmetro -computername ao gwmi

Exemplo de saída:

PS C:\WINDOWS\system32> (gwmi win32_operatingsystem -computername SomeComputer).caption
Microsoft Windows 7 Professional

Execute gwmi win32_operatingsystem | fl * para ver quais propriedades você pode selecionar adicionalmente para obter a saída desejada.

Exemplo de saída com mais de uma propriedade:

PS C:\WINDOWS\system32> gwmi win32_operatingsystem | 
select PSComputerName, caption, OSArchitecture, Version, BuildNumber | fl


PSComputerName : SomeComputer
caption        : Microsoft Windows 10 Pro
OSArchitecture : 64-Bit
Version        : 10.0.10240
BuildNumber    : 10240
    
por 01.06.2016 / 14:39
1

Gostaria de saber se existe outra solução para obter a versão do Windows?

Use o seguinte comando para recuperar a string completa da versão (que inclui o nome, a versão e o número do Service Pack:

[Environment]::OSVersion.VersionString

Exemplo de saída:

PS F:\test> [Environment]::OSVersion.VersionString
Microsoft Windows NT 6.1.7601 Service Pack 1
PS F:\test> 
    
por 01.06.2016 / 13:53