web-dev-qa-db-fra.com

Powershell pour trouver le système d'exploitation du serveur

J'avais pour tâche de trouver le système d'exploitation de tous les serveurs que nous avions dans AD pour certaines exigences relatives aux licences Microsoft. 

Quelqu'un l'a-t-il fait?

3
LT-

Je l'ai compris. 

S'il vous plaît, n'hésitez pas à l'utiliser et à le modifier. Si vous avez des questions, faites le moi savoir.

C'est une commande simple. J'espère que ça aide quelqu'un. Cela vous donne le type de système d'exploitation que vous avez. Je filtre en fonction de Windows Server uniquement et des comptes d’ordinateur actifs. Ensuite, triez par nom et sélectionnez OS unique.

Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True")} -Properties OperatingSystem | Sort Name | select -Unique OperatingSystem

Sortie:

OperatingSystem
---------------
Windows Server 2012 R2 Standard
Windows Server 2008 R2 Standard
Windows Server 2012 R2 Standard Evaluation
Windows Server 2008 R2 Enterprise

La commande suivante consiste à obtenir tous les serveurs et à afficher leur système d'exploitation. Encore une fois, je filtre en fonction du système d'exploitation serveur Windows et des comptes d'ordinateur actifs. Je trie ma liste par système d'exploitation:

Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True")} -Properties OperatingSystem | sort OperatingSystem | ft DNSHostName, OperatingSystem

Vous pouvez également enregistrer ce qui précède dans une variable, puis obtenir le nombre de serveurs dans chaque catégorie de système d'exploitation:

$Servers = Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True")} -Properties OperatingSystem | Sort Name

$servers | group operatingsystem  
6
LT-
$OSIs64BitArch = ([System.Environment]::Is64BitOperatingSystem)
$OSArchString = if ( $OSIs64BitArch ) {"x64"} else {"x86"}
$OSIsServerVersion = if ([Int]3 -eq [Int](Get-WmiObject -Class Win32_OperatingSystem).ProductType) {$True} else {$False}
$OSVerObjectCurrent = [System.Environment]::OSVersion.Version
if ($OSVerObjectCurrent -ge (New-Object -TypeName System.Version -ArgumentList "6.1.0.0")) {
    if ($OSVerObjectCurrent -ge (New-Object -TypeName System.Version -ArgumentList "6.2.0.0")) {
        if ($OSVerObjectCurrent -ge (New-Object -TypeName System.Version -ArgumentList "6.3.0.0")) {
            if ($OSVerObjectCurrent -ge (New-Object -TypeName System.Version -ArgumentList "10.0.0.0")) {
                if ( $OSIsServerVersion ) {
                    Write-Output ('Windows Server 2016 ' + $OSArchString + " ... OR Above")
                } else {
                    Write-Output ('Windows 10 ' + $OSArchString + " ... OR Above")
                }
            } else {
                if ( $OSIsServerVersion ) {
                    Write-Output ('Windows Server 2012 R2 ' + $OSArchString)
                } else {
                    Write-Output ('Windows 8.1 ' + $OSArchString)
                }
            }
        } else {
            if ( $OSIsServerVersion ) {
                Write-Output ('Windows Server 2012 ' + $OSArchString)
            } else {
                Write-Output ('Windows 8 ' + $OSArchString)
            }
        }
    } else {
        if ( $OSIsServerVersion ) {
            Write-Output ('Windows Server 2008 R2 ' + $OSArchString)
        } else {
            Write-Output ('Windows 7 OR Windows 7-7601 SP1' + $OSArchString)
        }
    }
} else {
    Write-Output ('This version of Windows is not supported.')
}
0
Ralph Lee