Allgemeine Befehle - PowerShell: Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
(Dienste / Services)
 
(30 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
 
==== Zeigt alle Aliase an. (Beispiel: Get-Command = gcm) ====
 
==== Zeigt alle Aliase an. (Beispiel: Get-Command = gcm) ====
 
  <source lang="powershell">Get-Alias</source>
 
  <source lang="powershell">Get-Alias</source>
 +
 +
==== Bereits Definierter Alias löschen ====
 +
<source lang="powershell">
 +
$alias= Get-Alias "<zu löschender Alias>"
 +
If (Test-Path Alias:$Alias) {Remove-Item Alias:$Alias}
 +
</source>
  
 
==== Eigenes PowerShell Profil anzeigen ====
 
==== Eigenes PowerShell Profil anzeigen ====
 
  <source lang="powershell">$profile</source>
 
  <source lang="powershell">$profile</source>
 
  
 
=== Darstellung / Suche ===
 
=== Darstellung / Suche ===
Zeile 38: Zeile 43:
 
==== Nur eine gewisse Spalte anzeigen und nach Alphabet sortieren ====
 
==== Nur eine gewisse Spalte anzeigen und nach Alphabet sortieren ====
 
  <source lang="powershell"><PowerShell-Command> | Select <Spaltenname> | Sort-Object -Property <Spaltenname></source>
 
  <source lang="powershell"><PowerShell-Command> | Select <Spaltenname> | Sort-Object -Property <Spaltenname></source>
 +
 +
==== Sortieren nach Datum ====
 +
<source lang="powershell">Sort {$_."<Spalten-Name>" -as [datetime]}</source>
 +
 +
==== 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.''
 +
<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>
  
  
Zeile 50: Zeile 74:
 
==== Windows Version anzeigen ====
 
==== Windows Version anzeigen ====
 
<source lang="powershell">[System.Environment]::OSVersion.Version</source>
 
<source lang="powershell">[System.Environment]::OSVersion.Version</source>
 +
 +
==== Windows Version anzeigen (all Hyper-V Nodes in VMM) ====
 +
<source lang="powershell">
 +
$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
 +
</source>
  
 
==== Systeminformationen anzeigen ====
 
==== Systeminformationen anzeigen ====
Zeile 100: Zeile 133:
 
==== Routing testen ====
 
==== Routing testen ====
 
  <source lang="powershell">Test-NetConnection -DiagnoseRouting</source>
 
  <source lang="powershell">Test-NetConnection -DiagnoseRouting</source>
 +
 +
 +
=== Remoting ===
 +
==== Invoke-Command: lokale Variable Remote verwenden ($using:variable) ====
 +
<source lang="powershell">
 +
$LokaleVariable = "Wert"
 +
 +
Invoke-Command -ComputerName <Hostname> -ScriptBlock {
 +
    $using:LokaleVariable
 +
}
 +
</source>
  
  
Zeile 128: Zeile 172:
 
==== Bestimmter Dienst löschen ====
 
==== Bestimmter Dienst löschen ====
 
  <source lang="powershell">.\sc.exe delete <Dienstname></source>
 
  <source lang="powershell">.\sc.exe delete <Dienstname></source>
 +
 +
==== Bestimmter Dienst per PowerShell löschen ====
 +
<source lang="powershell">(Get-WmiObject win32_service -filter "name='<Dienst-Name>'").delete()</source>
  
 
==== Alle Dienste innerhalb eines Prozesses anzeigen ====
 
==== Alle Dienste innerhalb eines Prozesses anzeigen ====
Zeile 135: Zeile 182:
 
Get-WmiObject -Class Win32_Service -Filter "ProcessId LIKE $id" | select Name
 
Get-WmiObject -Class Win32_Service -Filter "ProcessId LIKE $id" | select Name
 
</source>
 
</source>
 +
 +
 +
=== Treiber (Driver) ===
 +
==== Alle signierte Treiber inklusiv Version anzeigen ====
 +
<source lang="powershell">Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion</source>
 +
 +
==== Alle installierte Treiber eines Remote-System anzeigen (mittels driverquery.exe) ====
 +
<source lang="powershell">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 </source>
 +
 +
  
 
=== PowerShell Module ===
 
=== PowerShell Module ===
Zeile 143: Zeile 200:
 
  <source lang="powershell">Get-Command -Module Hyper-V</source>
 
  <source lang="powershell">Get-Command -Module Hyper-V</source>
  
 +
==== PowerShell Command von einem explicitem Modul "erzwingen" (Beispiel, bei Command-Konflikten) ====
 +
<Modul>\<Command>
 +
'''Beispiel:'''
 +
<source lang="powershell">Hyper-V\Get-VM</source>
 +
 +
 +
=== Windows Features ===
 +
==== Windows Feature deinstallieren (Beispiel SMBv1, ACHTUNG: Restart Notwendig!) ====
 +
<source lang="powershell">Remove-WindowsFeature -Name FS-SMB1 </source>
  
 
=== Hilfe ===
 
=== Hilfe ===
Zeile 158: Zeile 224:
 
=== Logging/Aufzeichnung ===
 
=== Logging/Aufzeichnung ===
 
==== Zeichnet alle Befehle in eine Textdatei auf: ====
 
==== Zeichnet alle Befehle in eine Textdatei auf: ====
Start-Transcript -Path C:\Users\Username\AllOutputs.txt
+
<source lang="powershell">Start-Transcript -Path C:\Users\Username\AllOutputs.txt</source>
 
==== Beendet die Aufzeichnung wieder: ====
 
==== Beendet die Aufzeichnung wieder: ====
Stop-Transcript -Path C:\Users\Username\AllOutputs.txt
+
<source lang="powershell">Stop-Transcript -Path C:\Users\Username\AllOutputs.txt</source>
  
  
  
 
[[Kategorie:PowerShell]]
 
[[Kategorie:PowerShell]]

Aktuelle Version vom 1. Juli 2020, 08: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