Der folgende Befehl listet alle Prozesse auf, sortiert nach CPU-Nutzung:
Get-Process | Select-Object -Property ProcessName, Id, CPU | Sort-Object -Property CPU -Descending
Der folgende Befehl listet alle Prozesse auf, sortiert nach CPU-Nutzung:
Get-Process | Select-Object -Property ProcessName, Id, CPU | Sort-Object -Property CPU -Descending
Will man mittels PowerShell die in Windows hinterlegten Netzwerk-Konfigurationen auslesen, so nimmt sich man den folgenden Befehl:
Get-NetIPConfiguration | Select-Object -Property InterfaceAlias, IPv4Address, IPv6Address, DNServer
Dieser Befehl sammelt Netzwerkkonfigurationsdetails wie Schnittstellenaliase, IPv4- und IPv6-Adressen und DNS-Serverinformationen.
Wann hat ein User das letzte Mal sein Passwort geändert? Wenn ich ein Active Directory einsetze und PowerShell nutzen möchte, so lautet der Befehl dazu wie folgt:
Get-ADUser USER -Properties PwdLastSet | Select-Object Name,UserPrincipalName,@{N="PasswordDate";e={[DateTime]::FromFileTime($_.Pwdlastset)}}
Man muss lediglich das Wort USER durch den Benutzernamen ersetzen.
Wenn man einmal schnell die Fehlermeldungen oder auch nur Warnungen von Windows aus der Ereignisanzeige mittels PowerShell abrufen will, so kann man dies mit folgendem Kommando:
get-winevent -FilterHashtable @{Logname = 'System';Level=2} -MaxEvents 30 | sort-Object ProviderName,TimeCreated
Will man auch noch die Warnungen dazu haben, so muss aus Level=2 einfach Level=3 werden.
Oft steht man vor dem Problem, dass aus Sicherheitsgründen die Skripte nicht ausgeführt werden können bzw. dürfen. Spätestens dann fängt man an zu googeln und landet bei execution policies.
Es geht aber auch einfacher. Mit dem folgenden Befehl umgeht man etwaige Sperren recht einfach:
powershell -ep bypass
Sollte der Befehl Probleme bereiten, so gibt es auch noch eine andere Möglichkeit:
Set-ExecutionPolicy Bypass -Scope Process -Force; .\script.ps1
Will man die Details über die Netzwerkkonfiguration von Windows erfahren, so nimmt man standardmässig den Befehl
ipconfig/all
unter der CMD Konsole. Unter PowerShell geht das wie folgt genauso gut:
Get-NetIPConfiguration | Select-Object -Property InterfaceAlias, IPv4Address, IPv6Address, DNServer
Der Traum jeden Admins ist es die Remote Verwaltung von Rechnern, ohne diese mittels RDP oder sonstiger RATs ansprechen zu müssen (VNC, etc.).
Hierzu eignen sich besonders die PowerShell-Kommandos. Folgendes Beispiel ermöglicht den Abruf der Uptime von allen Rechnern, die ich zuvor als Array ($computers) definiert habe, wie folgt:
Get-CimInstance Win32_operatingsystem -ComputerName $computers | Select-Object PSComputername,LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}}
Wichtig ist dabei aber, dass die Rechner die Version 3 von PowerShell installiert haben.
Oft steht man vor dem Problem, dass grosse Logdateien jeden Dateibetrachter wie notepad.exe in die Knie zwingen. Nimmt man eine komfortable Version eines Editors wie Notepad++, so hängt der sich auch mal gerne auf, wenn die Datei größer als 1GB wird. Was macht man nun? Wenn man beispielsweise weiß, dass man nur die letzten 500 Einträge einer zeitlich iterativen Datei sichten will, so kann man das unter Linux bekannte „tail“ nutzen. Das gibt es netterweise auch unter Windows unter Zuhilfe des PowerShell-CMDlets „Get-Content“.
Will man also die letzten 500 Einträge einer Datei sichten, so gibt man folgendes ein:
Get-content -tail 500 gross.log
Will man dieses Ergebnis in einer Datei haben, so nimmt man noch ein Piping dazu, wie folgt:
Get-content -tail 500 gross.log > klein.log
Wenn man mal eben einen Ordner auf der Kommandozeile zippen will, ohne auf fremde Tools zurückgreifen zu wollen, so geht dies recht einfach in der Windows-Konsole (CMD) und dem PowerShell-Befehl Compress-Archive, wie folgt:
powershell Compress-Archive . Datei.zip
Hier ist zu beachten, dass die Angabe des Punktes („.“) das aktuelle Verzeichnis darstellt.
Wer sich schon einmal gewundert hat, dass es in der Verwaltung von Exchange Online Mailboxen trotz fehlender Dauerweiterleitungen dennoch Anomalien gibt, dem sei geholfen, einmal in die Regeln einer User-Mailbox selbst hineinzuschauen.
Das geht mittels Delegation natürlich problemlos, hat aber den Nachteil, dass man mitunter warten muss, bis Exchange Online das verdaut hat.
Schneller geht es, wenn man direkt mittels PowerShell in die Mailbox-Regeln des jeweiligen Users reinschaut. Das geht schnell und komfortabel wie folgt:
Zuerst listet man sich alle Regeln auf:
Get-InboxRule -Mailbox e.xample@domain.com
Dann nimmt man sich die ID der jeweiligen Regel und schaut in die Details:
Get-InboxRule –Mailbox e.xample@domain.com -Identity "464563436546544" | FL
Präsentiert von WordPress & Theme erstellt von Anders Norén