Hier sammle ich Powershell Befehle (cmdlet) die ich sehr nützlich finde.

Natürlich kann man über die Hilfe (get-help) jedes cmdlet herausfinden, aber manchmal ist eine Übersicht ganz praktisch

 Der Aufbau ist immer gleich:

verb -- Nomen -- Parameter

(get -- Process -- id)

cmdlet, Funktionen und Parameter:

$PSVersionTable Version
$WhatIfPreference = $true    Simulationsmmodus
update-help Hilfedateien laden
get-help get-date  hilfe anzeigen zu "get-date"
get-help –name stop  zeigt alle cmdlets und Functionen mit stop im Befehl
get-childithem -path c:\ -filter *.doc -recurse  sucht *.doc dateien im Pfad C:\ und darunter
Get-ChildItem -Path Env:\COMPUTERNAME zeigt den PC Namen
Get-command *msc* Zeigt alle Commandos mit Endung .msc
-ErrorAction:SilentlyContinue Parameter unterdückt Fehler
| out-gridview mit pipe angehängt an cmdlet wird ein ext. Fenster geöffnet

Invoke-comand –scriptBlock {get-service} –computername testrechner

 

start-process

startet Notepad

| select-object -property

die pipe leitet die Ausgabe an den Filter (Select-object)--> mit dem Paramter -property kann die gewünschten Spaten auswählt werden (-proberty * zeigt alle Möglichkeiten)

 get-history zeigt die Befehls History

 Get-ChildItem -path C:\WINDOWS\system32 | where extension -EQ .txt

 Get-ChildItem -path C:\WINDOWS\system32 -Filter *.txt

 --> filtert aus dem Ergebnis alle Dateien mit Endung .txt

1. Serverseitig (also langsam) aber universell !

2.Auf der Client Seite (wenn das cmdlet den Parameter -Filter besitzt)

Get-ChildItem -Path $env:windir -File | Where-Object Length -gt 1MB

zeigt alle Dateien aus dem windir Verzeichnis die größer als 1MB sind

-gt = größer ( greater than)

-lt = kleiner (lower than)

-eq = gleich (equal)

ohne Vergleichsoperator wird nur angezeigt was vorhanden ist !

 $Name=Read-Host 'Bitte Name eingeben: ' Einfach Abfrage ( Fragt die Varaible $Name ab )
Export-WindowsDrivers -online -Destination d:\Drivers Exportiert alle Treiber des aktuellen Systems nach d:\Drivers
Get-ExecutionPolicy Zeigt ob nur signierte Skripte (oder überhaupt Skripte) ausgeführt werden dürfen
Set-ExecutionPolicy unrestricted Erlaubt ausführung aller! Skripte
Start-transcript -path c:\aufzeichnen.txt zeichnet die aktuelle Powershell Sitzung auf
 pathping host  ähnlich Tracroute

Reset-ComputerMachinePassword

oder

Test-ComputerSecureChannel -repair

Repariert die Vertrauenstellung Computer/Domäne

 new-smbshare erzeugt eine Netzwerkfreigabe

get-appxPackage

get-appxPackage |remove appxPackage

get-appxPackage * |fl name

get-appxProvisionPackage -online

get-appxProvisionPackage -online | ? displayname -like *bing* |remove-AppxProvisonPackage -online

Apps unter Win 10 anzeigen /entfernen

Remote Arbeiten:

Enable-PSRemoting -force
Powersehll für Remote freigeben:

Invoke-comand –scriptBlock {get-service} –computername testrechner

 führt das cmdlet "get-service" auf dem Remotecomputer(testrechner) aus

New-PSSesion -computername

Startet eine neu Powershell Session auf einem Remote Computer
   

wird fortgesetzt .....

Shorcuts im ISE:
STRG + F1 = suche nach cmdlets
STRG + R = zeigt den versteckt den Scriptbereich

 Interessante Konsolen Befehle für die Powershell und klassiche cmd:

Devmgmt  öffnet den Gerätemanager
Control    öffnet die Systemsteuerung
Driverquery  zeigt alle Treiber
Systeminfo   zeigt alle relevanten Systeminfos (Info : Systeminfo /?)
Systeminfo /s Testrechner  Info über Testrechenr anzeigen
Explorer $Home   öffnet Explorer im Home Ordner
Slmgr /dlv   zeigt Windows Lizenz Info an
Tzutil /?   Zeitzone einstellen / auslesen
Getmac /?   zeigt die Mac adresse

 cmd:

 

 

Winver

aktuelle Windows Version wird angezeigt

set

zeigt Systemvariablen

und den aktuell verwendeten Logon Server! (Domain Controller)

ms

 

msinfo32

zeigt, unter anderem, Umgebungsvariablen

w32tm /monitor

w32 /resysnc

Uhrzet anzeigen

neu synchronisieren mit DC

wird fortgesetzt .....

ISE (Integrated Scripting Enviroment)

Wenn im ISE ein Skript gespeichert wird, ist es zunächst nicht ausführbar. Falls man es starten möchte bekommt man folgende Fehlermeldung:

Grund ist die Ausführungsrichtlinie ( Execution Policy) die bei neuen Systemen erst mal alle Skripte verbietet:

das kann man prüfen mit dem Powershell Befehl: Get-ExecutionPolicy -List

Powershell liest die Einstellungen von oben nach unten. Die erste die nicht Undefined lautet wird angewandt !

Um nun die Ausführung für den aktuellen User zu ermögllichen, benötige ich folgenden Befehl: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
Anschließend sieht das ganze so aus:

Das bedeutet, alle lokalen (selbst erzeugte, oder Domänen eigene Skripte ) dürfen ausgeführt werden. Skripte aus dem Internet/email ... ohne gültige Signatur dürfen nicht ausgeführt werden.

 

Einsatz von Filter (bzw. Where-Object)

Where-Object = Filtert die Ergebnisse nach Kriterien

Beim Einsatz von |Where-Object können mithilfe von geschweiften Klammern auch mehrere Bedingungen (-lt = lower than; eq = equal ; -gt = greater than)mit logischen Operatoren -and, -or, -not in den Filter integriert werden.

z.B.: Suche im Verzeichnis c:\Test\   --> nach Dokumenten mit den Endungen *.txt und *.doc

Get-ChildItem -Path C:\test -File -ErrorAction SilentlyContinue | Where-Object {$_.Extension -eq '.doc' -or $_.Extension -eq '.txt' }

 

(***********************************************Anmerkung************************************

Für die Suche nach Endungen gibt es aber auch die Möglichkeit der Clientseitgen Filterung, die sehr viel schneller ist:

 Get-ChildItem -Path C:\test -File -recurse -ErrorAction SilentlyContinue  -Include *.txt,*.doc

********************************************************************************************)

Aufbau eines Filters Schritt für Schritt:

#Get-WmiObject Win32_NetworkAdapterConfiguration

-->Das cmdlet liefert alle Daten über die Netzwerkadapter:

#Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress

-->zeigt nur noch Einträge mit IP Adresssen

#Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress | Select-Object -ExpandProperty IPAddress

-->zeigt nur noch die IP Adressen an

#Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPAddress | Select-Object -ExpandProperty IPAddress | Where-Object { $_ -like '*:*' }

-->zeigt nur noch IP v6 Adressen an (Daten die einen Doppelpunkt entahlten)

 

Einsatz von Select-Object um das Ergebniss anzupassen

 

Select-Object = Gibt die Kontrolle, welche Spalten angezeigt werden

 

Unsichtbare Spalten anzeigen:

Mit Select-Object kann das Ergebnis gefiltert/angepasst werden, oder das Gegenteil, es kann alle Zeilen anzeigen:

z.B:

#get-wmiObject win32_bios

--> zeigt nur folgende Zeilen:

Wer alles sehen möchte fügt mit der Pipe folgenden Zusatz an:

#get-wmiObject win32_bios | select-object -property *

-->das Ergebniss ist sehr viel umfangreicher und zeigt alles mit den richtigen Spaltnamen an.

.....es gibt eine Flut an Informationen

 

Möchte ich jetzt aber nur einige Zeilen, z.B die IP Adressen anzeigen, kann ich mit SelectObject ganz bewusst nur die benötigten angeben:

#get-wmiObject win32_bios |select-object -property ipaddress

Genauso können Platzhalter verwendet werden ( |select-object *IP* ) zeigt alle Spalten in denen IP vorkommt.

Der Parameter -property ermöglicht die Auswahl weniger Spalten.

DerParameter -ExpandProperty ermöglicht die Auswahl einer Spalte mit allen Informationen

 

Schleifen

 

 Ein Beispiel für eine einfache Schleife:

#1..10 | forEach-Object {"Zahl: $_"}

mit der Pipe werden nacheinander die Zahlen 1..10 an den Parameter -process übergeben.

Der Script Code in den gescheiften Klammern wird somit für jede vorhandene Zahl ausgeführt.

Die Variable: $_ enthält jeweils die aktuelle Zahl.

Kommen keine neuen Zahlen ist die Schleife zu Ende!

 

Powershell Remote:

 

Remote für Powershell aktivieren:

Get-NetConnectionProfile

set-entconnectionProfile -InterfaceIndex 4 -NetworkCategory Private

 ... ist noch in Arbeit