Windows
-
PowerShell Drive alias:
PowerShell nutzt das Konzept der Laufwerke (=PowerShell Drives) sehr ausgiebig. So werden die Umgebungsvariablen in env: verwaltet, die Windows Registry aber auch die “normalen” Laufwerke wie “C:”. Auch Aliasse für Kommandos sind ein PowerShell Drive sind. Get-ChildItem alias:
-
Mehrfache Einträge in großen Konfigurationsdateien oder Protokollen finden (Windows Powershell Lösung)
Im Post Mehrfache Einträge in großen Konfigurationsdateien oder Protokollen finden(Linux/Unix) habe ich gezeigt, wie mehrfach vorkommende Zeilen in Textdateien gefunden und automatisch entfernt werden können. Windows hat im Zuge der Powershell ein mächtiges Werkzeug, dass dies auch kann. (Seit dem Windows 10 1709 Update kann man natürlich auch einfach die eingebaute bash nehmen….) Zur Demonstration verwende ich eine Datei duplicates.txt: Get-Content -Path duplicates.txt Zeile kommt nur einmal vor Zeile kommt zweimal vor Zeile kommt dreimal vor Zeile kommt zweimal vor Zeile kommt dreimal vor Zeile kommt auch nur einmal vor Zeile kommt dreimal vor Mehrfache vorkommende identische Zeilen und deren Anzahl findet und zählt man wie mit Group-Object Get-Content -Path…
-
Umgebungsvariablen in der PowerShell
Abfragen von Umgebungsvariablen Die Anzeige der Umgebungsvariablen war in der “alten” Kommandozwile (cmd) einfach per env durchzuführen. Die PowerShell bietet einen ähnlich einfachen Aufruf mit Get-ChildItem oder per Alias gci. Zu beachten ist, dass Get-ChildItem einen Pfad erwartet: Get-ChildItem env: Eine bestimmte Variable kann mit env: abgefragt werden: gci env:PATH Einfacher kann die Variable auch wie jeder Variable in Powershell angezeogt werden. $Env:Path Dieser Weg eignet sich besonders gut für Skripte. An dieser Stelle zeigt die PowerShell ihre Stärke. Die Variable kann mit Zeichenkettenoperationen weiter verarbeitet werden, da es ein STRING Objekt ist. Beispielsweise kann -replace zum Bearbeiten von Teilen der Variable verwendet werden: $Env:myVar=”Toast” $Env:myVar Toast $Env:myVar = $Env:myVar…
-
Powershell Test offener Ports auf einem Host
Unter Unix ist der Test offener Ports mit telnet <hostname> <port> beispielsweise: telnet slomka.biz 443 eine übliche Vorgehensweise. Unter Windows ist ein telnet Client meist nicht installiert. Die Powershell bietet mit dem Kommando Test-NetConnection eine sehr starken Alternative: Test-NetConnection -ComputerName slomka.biz -Port 443 ComputerName : slomka.biz RemoteAddress : 81.169.145.68 RemotePort : 443 InterfaceAlias : vEthernet (Virtueller Switch Qualcomm Atheros AR9485WB-EG Wireless Network Adapter) SourceAddress : 192.168.4.202 TcpTestSucceeded : True Für Skripte ist der Parameter -InformationLevel quiet sehr nütlich. Sie gibt nur ein True oder False zurück und kann damit in Abfragen einfach ausgewertet werden. Test-NetConnection -ComputerName slomka.biz -CommonTCPPort http -InformationLevel quiet True
-
PowerShell CmdLets für Microsoft Active Directory
Bei einer SAP Installation unter Windows sind bestimmte Gruppen und Benutzerzuordnungen im Active Directory Voraussetzung (siehe SAP Installation Guide). Ein SAP Administrator sollte nicht Mitglied der Windows AD Administratoren Gruppe sein. Bei einer SAP Installation muss er aber sicherstellen, dass die vorausgesetzten Gruppen und Benutzer angelegt wurden. Ein Beispiel: Bei der Installation des SAP Systems HSL sind die globale Gruppe SAP_HSL_GlobalAdmin und die Benutzer hsladm und SAPServiceHSL erforderlich. Die Benutzer müssen der Gruppe zugeordnet sein. Mit folgenden Abfragen kann dies überprüft werden: Abfrage des Benutzers Get-ADUser -properties MemberOf SAPServiceHSL DistinguishedName :CN=SAPServiceHSL,CN=Users,DC=slomka,DC=biz GivenName : MemberOf : {} Name : SAPServiceRPR ObjectClass : user ObjectGUID : 11111111-11a1-1111-a1111-aaa111aaa111 SamAccountName : sapservicerpr SID :…
-
Passwort eines Windows Service Accounts per PowerShell zurücksetzen
Um das Passwort eines Windows Service Benutzer zu ändern, kann in der PowerShell das CmdLet Reset-ADServiceAccountPassword verwendet werden. Reset-ADServiceAccountPassword -Identity SAPServiceHSL Das Kommando funktioniert nur bei standalone manage service accounts, nicht bei group managed service accounts (gMSA).
-
Die Ausführung von PowerShell Skripten zulassen
PowerShell Skripte dürfen in Windows standardmäßig nicht ausgeführt werden. Windows verweigert die Ausführung. Öffnen Sie die Windows PowerShell mit dem Kontextmenübefehl Als Administrator ausführen (rechter Mausklick auf das PowerShell Icon) und geben Sie den Befehl PS> Set-ExecutionPolicy RemoteSigned ein. Ich empfehle grundsätzlich die Eingabe von RemoteSigned anstatt Unrestricted. RemoteSigned erlaubt im Gegensatz zu Unrestricted die Ausführung von lokal erstellten PowerShell Skripten. Diese Skriptdateien müssen nicht signiert werden. Achtung: Sollten die Skripte auf einem anderen Rechner erstellt worden sein, so verweigert Windows die Ausführung unter Umständen (wenn der Rechner nicht in einer vertrauenwürdigen Umgebung war (siehe Internet Explorer Zones). Mit dem Befehl Set-ExecutionPolicy Allsigned müssen alle Skripte digital signiert werden. Ob…