Como obter a versão do sistema operacional através do Powershell com o WMI?

4

Alguém sabe como obter a versão do sistema operacional assim:

Versão do SO: 1607

Com o uso do Get-WmiObject? Não foi possível encontrar este Informatin em tudo ..

    
por j.walt 11.06.2018 / 09:29

4 respostas

1

A versão do sistema operacional é armazenada em uma chave do Registro: NT \ CurrentVersion \ ReleaseId HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows . Normalmente você pode ler essas chaves usando o WMI.

LotPings forneceu a consulta correta nos comentários: (Get-Item "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ReleaseID')

    
por 11.06.2018 / 09:37
0

Aqui está um pequeno script que escrevi para encontrar informações sobre o computador:

Powershell: obtenha informações sobre o computador

$Computer = "localhost"
$Manufacturer = Get-WmiObject -ComputerName $Computer -class win32_computersystem | select -ExpandProperty Manufacturer
$Model = Get-WmiObject -class win32_computersystem -ComputerName $Computer | select -ExpandProperty model
$Serial = Get-WmiObject -class win32_bios -ComputerName $Computer | select -ExpandProperty SerialNumber
$wmi_os = Get-WmiObject -class Win32_OperatingSystem -ComputerName $Computer | select CSName,Caption,Version,OSArchitecture,LastBootUptime
switch($wmi_os.Version){
'10.0.10240'{$wmi_build="1507"}
'10.0.10586'{$wmi_build="1511"}
'10.0.14393'{$wmi_build="1607"}
'10.0.15063'{$wmi_build="1703"}
'10.0.16299'{$wmi_build="1709"}
'10.0.17134'{$wmi_build="1803"}
'10.0.17686'{$wmi_build="1809"}
}
$wmi_cpu = Get-WmiObject -class Win32_Processor -ComputerName $Computer | select -ExpandProperty DataWidth
$wmi_memory = Get-WmiObject -class cim_physicalmemory -ComputerName $Computer | select Capacity | %{($_.Capacity / 1024kb)}
$DNName = Get-ADComputer -Filter "Name -like '$Computer'" | select -ExpandProperty DistinguishedName
$Boot=[System.DateTime]::ParseExact($($wmi_os.LastBootUpTime).Split(".")[0],'yyyyMMddHHmmss',$null)
[TimeSpan]$uptime = New-TimeSpan $Boot $(get-date)
Write-Host "------Computer Info for $Computer------------------'r"
Write-Host "Hostname from WMI': $($wmi_os.CSName)"
Write-Host "$DNName"
Write-Host "$Manufacturer $Model SN':$Serial"
Write-Host "$($wmi_os.Caption) $wmi_build $($wmi_os.OSArchitecture) $($wmi_os.Version)"
Write-Host "CPU Architecture: $wmi_cpu"
Write-Host "Memory: $wmi_memory"
Write-Host "Uptime': $($uptime.days) Days $($uptime.hours) Hours $($uptime.minutes) Minutes $($uptime.seconds) Seconds"
Write-Host "--------------------------------------------------------"
    
por 14.06.2018 / 17:12
0

Encontrou este script interessante no TechNet Gallary: Get-WindowsVersion

Veja como fica:

[19JUN] :>Get-WindowsVersion -ComputerName ktpc

ComputerName Productname           WindowsVersion WindowsBuild   ProductID               InstallTime
------------ -----------           -------------- ------------   ---------               -----------
KTPC         Windows 10 Enterprise 1803           10.0.17134.112 00329-10280-00000-AA451 5/22/2018 8:10:15 AM

Ele utiliza o mesmo "RealseID" que outros sugeriram para obter esse valor. No entanto, é um bom esforço e pronto para usar.

    
por 18.06.2018 / 21:11
0

Não é através do WMI, mas Jeff Mercado answer pode ser uma ajuda de qualquer forma;

Como você tem acesso à biblioteca .NET, pode acessar a OSVersion propriedade da classe System.Environment para obter essas informações. Para o número da versão, existe a propriedade Version .

Por exemplo,

PS C:\> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
6      1      7601   65536

Detalhes das versões do Windows podem ser encontrados aqui .

    
por 31.10.2018 / 10:34