Einblicke in (Security)-Themen ausm tiefen Wald

Autor: Der Waldmeister persönlich Seite 3 von 5

Befehl auf remote Maschine ausführen

Wie schon in meinem anderen PowerShell-Posting zum Administrieren von remote Maschinen, geht es hier um das Gleiche, allerdings mit einem anderen Befehl.

Invoke-Command -ComputerName ZielPC -ScriptBlock { Get-Process } -Credential (Get-Credential)

In diesem Falle wird der Befehl Get-Process ausgeführt. Man kann natürlich auch seinen kompletten Code in eine andere Variable packen und diese dann hier nennen. Komfortabel wird es, wenn man seinen Scriptblock einfach in eine externe Datei legt und diese inkludiert.

TaskManager – Prozesse auslesen und darstellen

Der folgende Befehl listet alle Prozesse auf, sortiert nach CPU-Nutzung:

Get-Process | Select-Object -Property ProcessName, Id, CPU | Sort-Object -Property CPU -Descending

Netzwerk Konfiguration auslesen

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.

Befehl letzte Änderung des Passworts eines Benutzers im Active Directory

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.

An welchem DC Server bin ich angemeldet?

Die Anmeldung eines Clients am Active Directory findet sich in der Umgebungsvariable %logonserver% auf der Konsole:

echo %logonserver%

Einträge in der Windows-Ereignisanzeige per PowerShell abfragen

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.

Einschränkungen einmalig aufheben pro Session

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

ipconfig Nachbau

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

Windows sauber und in Ordnung halten

SFC (System File Checker) ist eine relativ neue Ergänzung zur Eingabeaufforderung, um sein Windows sauber und fehlerfrei zu halten.

Es handelt sich um ein praktisches Befehlszeilentool, mit dem man viele Systemprobleme beheben kann, wie folgt

sfc /scannow

Nach dem Absetzen des Befehls beginnt die Überprüfung der Integrität aller geschützten Systemdateien. Darüber hinaus werden die beschädigten Dateien nach Möglichkeit repariert.

Wenn man also in Zukunft auf ein Problem stoßen sollte, so setzt man mit diesem Befehl alle Dateien wieder zur funktionierenden Version von Dateien zurück.

Remote Rechner mittels PowerShell ansprechen

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.

Seite 3 von 5

Präsentiert von WordPress & Theme erstellt von Anders Norén