• PowerShell

    Powershell Tail und Head vereint

    Ausgabe der letzten und der ersten n-Zeilen in einemBefehl In Unix/Linux Derivaten sind die Befehle tail und Head oft benutzte Werkzeuge zur Ausgabe der ersten/letzten Zeilen einer Datei oder der Ergebnisse eines Befehls. Direkt kombinieren kann man sie nicht. Hier sind sed/awk und andere Werkzeuge und Lösungen gefordert. Powershell bietet eine sehr effiziente Lösung. Der erste Ansatz wäre die Ausgabe mit Select -Last und Select -First zu behandeln. Get-ChildItem somefolder | Select -First 10 Get-ChildItem somefolder | Select -Last 10 Das geht aber nicht in einem Befehl (oder nur mit einer zu schreibenden Funktion). Damit haben wir das gleiche Problem wie mit head und tail in Unix. Per Get-ChildItem und…

  • Middleware,  PowerShell

    Powershell tail für Textdateien

    In Powershell kann die Ausgabe der letzten n Zeilen in grossen Text/Ascii Dateien mit der -tail Option von Get-Content erfolgen: Get-Content meineRiesigeDatei.csv -tail 25 Seit Powershell v3 bietet Get-Content (oder der zugehörige alias gc) die Option -tail. Leider gibt es keinen tail -f zur fortlaufenden Aktualisierung.

  • PowerShell,  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:

  • PowerShell,  Windows

    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…

  • PowerShell,  Windows

    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,  Windows

    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,  SAP,  Windows

    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 :…

  • PowerShell,  SAP,  Windows

    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).