PS: Masseneditions Upgrade

Moin,

wir wollen uns Lizenztechnisch absichern und Altlasten, die vor unserem SA Vertrag mit Microsoft installiert wurden, aufräumen. Vor dem SA haben wir virtuelle Server als Standard/Enterprise aufgesetzt, je nach dem was wir für den Jeweiligen Server benötigten. Mit dem SA ist nun die Vorgabe, dass alle virtuelle Maschinen Datacenter und die Physischen Standard sind.

Wir setzen hierfür nicht jeden Server neu auf. Das ganze kann via DISM und einem Reboot on-the-fly gemacht werden. Aber eben nicht bei rund 200 Servern.

Also mal wieder die Powershell:

##Verschiedene Input Moeglichkeiten

#1 – Filtert alle Windows Server aus dem AD, die Standard oder Enterprise sind und bei denen der Hostname mit v beginnt.
# Dies filter nur virtuelle Maschinen aus, da die MS Datacenter Geschichte nur fuer virtuelle Rechner gilt. Citrix lassen wir auch
# aussen vor, da dies sonst die Citrix Worker betrifft.
$servers = Get-ADComputer -LDAPFilter „(&(objectcategory=computer)(OperatingSystem=*Windows Server*))“ -properties * | where{$_.OperatingSystem -like „*Standard*“ -or $_.OperatingSystem -like „*Enterprise*“} | where {$_.DnsHostname -like „vp*“ -or $_.DnsHostname -like „vd*“ -or $_.DnsHostname -like „vc*“} | Sort-Object DNSHostName,OperatingSystem
$x = $servers | where{$_.DistinguishedName -notlike „*Citrix*“} |foreach {$_.DNSHostName}

# Nur die ersten 10 Treffer um das ganze in Wellen durchzufuehren
#$computers = $x | select -first 10

#2 – Klassisch anhand einer Serverliste
#$computers = get-content serverliste.csv

#3 – Direkteingabe
#$computers = „vproddhcp04“

#Wir pruefen nun die Ausgangsversion und die Zielmoeglichkeiten
foreach ($computer in $computers)
{

$computer
$version = Invoke-Command -ComputerName $computer -ScriptBlock { DISM /online /Get-CurrentEdition }
$target = Invoke-Command -ComputerName $computer -ScriptBlock { DISM /online /Get-TargetEditions }
# Nur wenn Das Moegliche Upgradeziel Datacenter ist machen wir weiter
if ($target -contains „Zieledition : ServerDatacenter“){
#Wenn Server 2012R2
if ($version -like „Abbildversion: 6.3.9600*“){Invoke-Command -ComputerName $computer -ScriptBlock { DISM /online /Set-Edition:ServerDatacenter /productkey:W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9 /AcceptEula /norestart}
$computer + „;Server 2012R2“ >> c:\temp\OSChange_erledigt.txt}
#Wenn Server 2008R2
if ($version -like „Abbildversion: 6.1.7601*“){Invoke-Command -ComputerName $computer -ScriptBlock { DISM /online /Set-Edition:ServerDatacenter /productkey:74YFP-3QFB3-KQT8W-PMXWJ-7M648 /norestart}
$computer + „;Server 2008R2“ >> c:\temp\OSChange_erledigt.txt}
#Wenn Server 2012
if ($version -like „Abbildversion: 6.2.9200*“){Invoke-Command -ComputerName $computer -ScriptBlock { DISM /online /Set-Edition:ServerDatacenter /productkey:48HP8-DN98B-MYWDG-T2DCC-8W83P /AcceptEula /norestart}
$computer + „;Server 2012“ >> c:\temp\OSChange_erledigt.txt}

else {#Wenn nichts von den obigen
write-host $computer + „Keine gueltige Zielversion gefunden“
$computer + „;Fehler!“ >> c:\temp\OSChange_erledigt.txt
}}
}

#Fertig, Server muessen dann noch manuell Neugestartet werden, wir nutzen dafuer den naechsten regulaeren WSUS Patchday.
#Die Hier verwendeten Keys sind die KMS Clientkeys 🙂

Somit kann man, je nach Input, alle Server auf einmal, oder eben in Wellen umstellen.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.