Upgrade auf PowerShell 5: Einfache Schritte & Skripte

Wenn Sie sich dafür entscheiden, PowerShell 5.1 zu installieren, habe ich eine technische Anleitung mit einigen Skripten erstellt, um diesen Prozess für Sie zu automatisieren. Haftungsausschluss: Alle in diesem Beitrag genannten Codes sind wie sie sind. Einige können funktionieren, andere möglicherweise nicht in Ihrer Umgebung. Wenn Sie jedoch nichts haben, um zu beginnen, dient es als Vorlage für Sie.

Wenn Sie Hilfe benötigen, um herauszufinden, welche Version von PowerShell Sie verwenden, empfehle ich Ihnen, Wie Sie Ihre PowerShell-Version überprüfen (auf alle möglichen Arten!) anzusehen.

Schritt Nr. 1: Entdeckung

Der erste Schritt bei der Durchführung eines unternehmensweiten Upgrades von PowerShell besteht darin, die Ausgangssituation zu erkennen. Wie sieht die aktuelle Landschaft aus? Sie können etwas nicht ändern, ohne es zuerst zu verstehen, und überraschenderweise haben viele Organisationen keine Ahnung, was sie haben!

Vorhandene Betriebssysteme

Die erste Aufgabe besteht darin, zu verstehen, welche Betriebssysteme Sie derzeit haben und auf denen Sie PowerShell 5.1 verwenden möchten. Auf einigen Systemen haben Sie möglicherweise bereits beschlossen, PowerShell 5.1 zu installieren, ohne es zu wissen. PowerShell 5.1 wurde als gebündeltes Tool in Windows 10 Anniversary Update und in der RTM-Version von Windows Server 2016 veröffentlicht. Wenn Sie also eine dieser Betriebssysteme oder eine neuere Version haben, sind Sie bereits bereit.

Für die anderen sollten Sie eine Liste erstellen. Haben Sie kein Systemverwaltungstool wie SCCM? Kein Problem! Verwenden Sie PowerShell, um PowerShell zu helfen! Wenn Sie Active Directory haben, hier ist ein schneller Einzeiler, um einen Überblick über das zu bekommen, was verfügbar ist.

PS> Get-ADComputer -Filter "OperatingSystem -like 'Windows*'" -Properties OperatingSystem | group operatingsystem | sort name
Count Name                      Group
----- ----                      -----
922 Windows 10 Enterprise     XXXXXXXXXXXXXXXXXX
714 Windows 7 Enterprise      XXXXXXXXXXXXXXXXXX
23 Windows 7 Professional     XXXXXXXXXXXXXXXXXX
4 Windows 7 Ultimate          XXXXXXXXXXXXXXXXXX
2 Windows 8 Consumer Pre...   XXXXXXXXXXXXXXXXXX
1 Windows 8 Enterprise        XXXXXXXXXXXXXXXXXX

Wie sieht Ihre Umgebung aus? Haben Sie noch alte Windows XP- oder Server 2003-Maschinen? Wenn ja, haben Sie Pech gehabt. Das Beste, was Sie dort tun können, ist PowerShell v2, aber wenn Sie noch einige davon in Ihrer Umgebung haben, ist PowerShell das geringste Ihrer Probleme! Für jedes Betriebssystem mit Windows 7 SP1/Windows Server 2008R2 SP1 oder höher kann PowerShell 5.1 installiert werden.

Erstellen einer Voraussetzungsziel-Liste

Auf geeigneten Betriebssystemen hat PowerShell 5.1 einige Voraussetzungen und Anforderungen, die erfüllt werden müssen, bevor es funktioniert.

  • Mindestens .NET Framework 4.5.2 installiert. Dies ist keine Installationsanforderung und die Installation wird trotzdem fortgesetzt, aber einige Funktionen werden nicht funktionieren, also machen Sie es einfach schon!
  • PowerShell 5.1 Preview darf nicht installiert sein
  • Auf Windows 7- oder Server 2008R2-Maschinen mit installierter PowerShell v3 müssen Sie entweder den Wert von PSModulePath speichern oder zuerst auf v4 upgraden.
  • Auf Windows 7- oder Server 2008R2-Maschinen, wenn DSC verwendet wird, stellen Sie sicher, dass WinRM aktiviert ist.
  • Die Installation erfordert einen Neustart, also stellen Sie sicher, dass Sie dies planen.

Weil ich faul bin und beabsichtige, dass du es auch bist, hier ist ein kleines Skript, das ich zusammengestellt habe, um dir dabei zu helfen, herauszufinden, welche Art von Vorarbeiten erforderlich sind. Für die WinRM-Anforderung könntest du auch Code aus diesem Skript von mir einbinden, da du jeden Computer berührst. Beachte jedoch, dass dieser Ansatz erfordert, dass PowerShell Remoting auf jedem Computer aktiviert ist.

## Dies könnte Active Directory, eine Textdatei, eine SQL-Datenbank usw. sein$computers = Get-AdComputer -Filter *foreach ($c in $computers.Name) {	try {		$session = New-PSSession -ComputerName $c		$icmParams = @{			Session = $session		}		$output = @{        	ComputerName = $c		}    	## Falls sie PowerShell v3 ausführen		$icmParams.ScriptBlock = { $env:PSModulePath; [Environment]::GetEnvironmentVariable("PSModulePath", "Machine") }		$output.PSModulePath = (Invoke-Command @icmParams) -split ';' | Select-Object -Unique | Sort-Object    	## Aktuelle Version abrufen    	$icmParams.ScriptBlock = { $PSVersionTable.BuildVersion.ToString() }    	$output.PSModulePath = Invoke-Command @icmParams		## .NET Framework 4.5.2 überprüfen		if (Get-ChildItem -Path "\$c\c$\windows\Microsoft.NET\Framework" -Directory | Where-Object {$_.Name -match '^v4.5.2.*' }) {			$output.DotNetGood = $true		} else {			$output.DotNetGood = $false		}		[pscustomobject]$output	} catch {	} finally {		Remove-PSSession -Session $session -ErrorAction Ignore	}

Stellen Sie sicher, dass bestehende Skripte mit PowerShell 5.1 ausgeführt werden können.

Auch wenn Mitglieder des PowerShell-Teams selbst mir gesagt haben, dass alle Skripte sollten mit PowerShell 5.1 funktionieren, ist das nicht immer der Fall. Für jeden Code, der wichtige Geschäftsprozesse ausführt, empfehle ich immer, 5.1 auf demselben Betriebssystem einer anderen Maschine zu installieren und alle Tests auf diese Weise durchzuführen, um sicherzugehen.

Schritt Nr. 2: Bereitstellung

Sobald Sie alle Voraussetzungen erfüllt haben und bereit sind, PowerShell 5.1 einzuführen, ist der nächste Schritt die eigentliche Bereitstellung! Die Bereitstellung von 5.1 ist ähnlich wie bei anderen Software-Installationen. Wie Sie vorgehen, hängt von den vorhandenen Tools ab. Wenn Sie beispielsweise Active Directory haben und GPOs verwenden möchten, können Sie diesen Weg gehen, SCCM würde genauso funktionieren. Ich versuche hier produktagnostisch zu sein, deshalb zeige ich Ihnen, wie ich es mit PowerShell machen würde, natürlich!

Zuerst erstelle ich auf meinem lokalen Computer einen Ordner namens C:\PowerShellDeployment. Als nächstes werde ich die entsprechende(n) Version(en), die ich benötige, in diesen Ordner herunterladen und eine Kopie von psexec mitnehmen. Da sich PowerShell nicht selbst aktualisieren kann, müssen wir auf das gute alte VBScript zurückgreifen. Hier ist ein kleines Skript, das ich vor langer Zeit erstellt habe, um Ihnen den Einstieg zu erleichtern. Ich werde es unter C:\PowerShellDeployment\installPs.vbs speichern.

Set oShell = WScript.CreateObject("WScript.Shell")
Set oFso = CreateObject("Scripting.FileSystemObject")
strWorkingDir = oFso.GetParentFolderName(wscript.ScriptFullName)

'Change this to whatever file name it is
psInstallerPath = strWorkingDir & "\Windows6.1-KB2819745-x86-MultiPkg.msu"
Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set swbemServices = swbemLocator.ConnectServer(".", "Root\CIMV2")
if oFSO.GetFileVersion("c:\windows\system32\windowsPowerShell\v1.0\PowerShell.exe") = "6.0.6002.18111"
then
	Set colArchs = swbemServices.ExecQuery("SELECT SystemType FROM Win32_ComputerSystem",,48)
	For Each objArch in colArchs
    	if
        	InStr(objArch.SystemType,"x64-based PC") > 0
        Then
        	oShell.Run "wusa.exe " & psInstallerPath & " /quiet /norestart",0,True
		Else
        	Wscript.Quit(10)
		End If
	Next
End if

Sobald Sie den VBS auf Ihrem lokalen Rechner gespeichert haben, erstellen Sie ein PowerShell-Skript wie folgt und speichern Sie es an einem beliebigen Ort.

## Muss nicht erneut AD sein$computers = Get-AdComputer -Filter *foreach ($Computer in $Computers) {    if (Test-Connection -Computername $Computer -Quiet -Count 1) {        $folderPath = 'C:\PowerShellDeployment'        Copy-Item -Path $folderPath -Destination "\$Computer\c$"        psexec \$Computer cscript "$folderPath\installPs.vbs"        Remove-Item "\$Computer\c$\PowerShellDeployment" -Recurse -Force        Restart-Computer -Computername $Computer -Force}

Führen Sie das obige Skript aus und es sollte überprüfen, ob der Computer online ist, den PowerShell-Installer und das VBS auf den Remote-Computer kopieren, es ausführen, aufräumen und den Computer neu starten. Wie immer sollten Sie dies in einem Wartungsfenster planen! Die Installation von PowerShell erfordert einen Neustart, und dies wird ihn einfach ohne Bedauern durchführen.

Source:
https://adamtheautomator.com/install-powershell-5/