Allgemeine Befehle - PowerShell
Aus Wiki-WebPerfect
Inhaltsverzeichnis
- 1 Allgemein
- 2 Darstellung / Suche
- 2.1 Darstellung Werte in einer Tabelle ausgeschrieben (Format-Table)
- 2.2 Suchen nach Befehlen mit einem Suchstring (Get-Command)
- 2.3 Beispiele bzw. Verwendung eines Befehls anzeigen
- 2.4 Objekt in einer Tabelle suchen
- 2.5 Nur eine gewisse Spalte anzeigen
- 2.6 Nur eine gewisse Spalte anzeigen und nach Alphabet sortieren
- 2.7 Sortieren nach Datum
- 2.8 PowerShell-History durchsuchen (backsearch)
- 2.9 Table mit fixer Spaltengrössen (column width)
- 3 Dateien
- 4 Betriebssystem
- 5 Prozesse
- 6 User
- 7 Filesystem
- 8 Netzwerk
- 9 Remoting
- 10 Datum und Zeit
- 11 Variablen
- 12 Dienste / Services
- 13 Treiber (Driver)
- 14 PowerShell Module
- 15 Windows Features
- 16 Hilfe
- 17 Logging/Aufzeichnung
Allgemein
Ausklammern / Kommentar im PowerShell Quellcode
#Beschreibung des Commands
Analyse was würde der Befehl bewirken
<Command> -WhatIf
Zeigt an was er alles gemacht hat
<Command> -Verbose
Zeigt alle Aliase an. (Beispiel: Get-Command = gcm)
Get-Alias
Bereits Definierter Alias löschen
$alias= Get-Alias "<zu löschender Alias>" If (Test-Path Alias:$Alias) {Remove-Item Alias:$Alias}
Eigenes PowerShell Profil anzeigen
$profile
Darstellung / Suche
Darstellung Werte in einer Tabelle ausgeschrieben (Format-Table)
<sonstiger PowerShell-Command> | Format-Table -Wrap -AutoSize
Suchen nach Befehlen mit einem Suchstring (Get-Command)
gcm *-*<Suchstring>*
Beispiel: Alle Befehle mit dem Suchstring VPN:
gcm *-*vpn*
Beispiele bzw. Verwendung eines Befehls anzeigen
man <Befehl> -Examples
Objekt in einer Tabelle suchen
<Command> | ? name -match "Suchbegriff"
Nur eine gewisse Spalte anzeigen
<PowerShell-Command> | Select <Spaltenname>
Nur eine gewisse Spalte anzeigen und nach Alphabet sortieren
<PowerShell-Command> | Select <Spaltenname> | Sort-Object -Property <Spaltenname>
Sortieren nach Datum
Sort {$_."<Spalten-Name>" -as [datetime]}
PowerShell-History durchsuchen (backsearch)
- Ctrl + R
- Suchbegriff eingeben
Table mit fixer Spaltengrössen (column width)
Mit dem Metadata Property "width" kann eine fixe Grösse für Spalten angegeben werden.
$TableSize = @{Expression={$_.Name}; Name="Name"; Width=30}, @{Expression={$_.Id}; Name="Id"; Width=10}, @{Expression={$_.FileVersion}; Name="FileVersion"; Width=40} Get-Process | Select-Object -First 5 | Select-Object -Property Name, Id, FileVersion | Format-Table -Property $TableSize
Dateien
Komprimierung bzw. Erstellung eines Zip-Archives
Compress-Archive -Path <Verzeichnis> -DestinationPath <Verzeichnis>.zip -CompressionLevel Optimal
Entpacken eines Zip-Archives
Expand-Archive <Archiv>.zip <Destination-Verzeichnis> -Force
Betriebssystem
Windows Version anzeigen
[System.Environment]::OSVersion.Version
Windows Version anzeigen (all Hyper-V Nodes in VMM)
$HyperVNodes = (Get-SCVMHost).ComputerName | Sort Invoke-Command -ComputerName $HyperVNodes -ScriptBlock { (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion") } | select @{N='HyperVNode';E={$_.PSComputerName}}, "CurrentMajorVersionNumber","CurrentMinorVersionNumber","CurrentBuildNumber","ReleaseId","UBR" | Ft
Systeminformationen anzeigen
Systeminfo
Informationen über das Pagefile.sys anzeigen
wmic pagefile list /format:list
Pagefile Konfiguration anzeigen (Beispiel: Automatic)
wmic Computersystem get AutomaticManagedPagefile /VALUE
Prozesse
Alle laufenden Prozesse anzeigen
Get-Process
Bestimmten Prozess stoppen (Beispiel: Notepad)
Get-Process | ? ProcessName -eq notepad | Stop-Process
Alle laufenden Prozesse einer Applikation anzeigen (Beispiel: Notepad | Unterschiedliche Schreibweisen)
Get-Process | Where-Object {$_.ProcessName -eq 'notepad'} Get-Process | Where {$_.ProcessName -eq 'notepad'} Get-Process | ? ProcessName -eq notepad
User
Alle angemeldeten Benutzer anzeigen
query user /server:$SERVER
Benutzer abmelden
logoff <Session-ID> /server:<Server> /V
Benutzer-Session zurücksetzen
reset <Session-ID> /server:<Server> /V
Message an alle angemeldeten Benutzer schicken
msg * "Your message goes here"
Filesystem
Alle Laufwerke und Mounts anzeigen
Get-psdrive
Netzwerk
Ports testen (Telnet Alternative)
Test-NetConnection <IP oder DNS-Namen> -Port <Port>
Beispiel: Port 80 bei Webperfect testen:
Test-NetConnection webperfect.ch -Port 80
Routing testen
Test-NetConnection -DiagnoseRouting
Remoting
Invoke-Command: lokale Variable Remote verwenden ($using:variable)
$LokaleVariable = "Wert" Invoke-Command -ComputerName <Hostname> -ScriptBlock { $using:LokaleVariable }
Datum und Zeit
Beispiel das Datum von Heute vor 180 Tage anzeigen
$Now = Get-Date $Now | gm $Now.addDays(-180)
Variablen
Variablen setzen
Für Strings:
$Variable = "Test"
Für Integers:
$Variable = 1
Explicite Variable definieren
[string]$Variable = "Test"
Zeigt alle möglichen Eigenschaften der Objekte (Beispiel: Anzahl der Buchstaben im Wert der Variable)
$Variable | Get-Member
Beispiel:
$Variable.Length
Dienste / Services
Bestimmter Dienst löschen
.\sc.exe delete <Dienstname>
Bestimmter Dienst per PowerShell löschen
(Get-WmiObject win32_service -filter "name='<Dienst-Name>'").delete()
Alle Dienste innerhalb eines Prozesses anzeigen
$Service = "<zu suchender Server>" $ID = Get-WmiObject -Class Win32_Service -Filter "Name LIKE '$Service'" | Select-Object -ExpandProperty ProcessId Get-WmiObject -Class Win32_Service -Filter "ProcessId LIKE $id" | select Name
Treiber (Driver)
Alle signierte Treiber inklusiv Version anzeigen
Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion
Alle installierte Treiber eines Remote-System anzeigen (mittels driverquery.exe)
driverquery /s <Hostname> /v /fo csv | ConvertFrom-Csv | Select-Object "Display Name", "Module Name", "Driver Type", "Link Date", "Start Mode", "Paged Pool(bytes)", "Path" | Sort {$_."Link Date" -as [datetime]} | ft
PowerShell Module
PowerShell verfügbare Module anzeigen
Get-Module list
Funktionen bzw. Commands eines Modules anzeigen
Get-Command -Module Hyper-V
PowerShell Command von einem explicitem Modul "erzwingen" (Beispiel, bei Command-Konflikten)
<Modul>\<Command>
Beispiel:
Hyper-V\Get-VM
Windows Features
Windows Feature deinstallieren (Beispiel SMBv1, ACHTUNG: Restart Notwendig!)
Remove-WindowsFeature -Name FS-SMB1
Hilfe
Man-Pages bzw. Hilfe-Seiten aktualisieren
PowerShell als Administrator öffnen:
Update-Help
Man-Artikel eines Commands als Fenster anzeigen
man <Command> -ShowWindow
Beschreibung/Hilfe eines Parameters zu einem Command anzeigen
man <Command> -Parameter <parameter>
Logging/Aufzeichnung
Zeichnet alle Befehle in eine Textdatei auf:
Start-Transcript -Path C:\Users\Username\AllOutputs.txt
Beendet die Aufzeichnung wieder:
Stop-Transcript -Path C:\Users\Username\AllOutputs.txt