Allgemeine Befehle - PowerShell: Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
 
Zeile 47: Zeile 47:
 
<source lang="powershell">Sort {$_."<Spalten-Name>" -as [datetime]}</source>
 
<source lang="powershell">Sort {$_."<Spalten-Name>" -as [datetime]}</source>
  
==== PowerShell-History durchsuchen ====
+
==== PowerShell-History durchsuchen (backsearch) ====
 
*Ctrl + R
 
*Ctrl + R
 
*Suchbegriff eingeben
 
*Suchbegriff eingeben
 +
 +
==== Table mit fixer Spaltengrössen (column width) ====
 +
''Mit dem Metadata Property "width" kann eine fixe Grösse für Spalten angegeben werden.''
 +
<source lang="powershell">
 +
$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
 +
</source>
  
  

Aktuelle Version vom 1. Juli 2020, 07:35 Uhr

Powershell.png

Inhaltsverzeichnis

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)

Powershell-test-connection.png
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