Sie sind auf Seite 1von 5

Verwendete Version: PowerShell V6.

Stefan Menne 2008-2017

http://smenne.de/Referenzen/ReferenzPowerShell.pdf
PowerShell-Referenz
PowerShell-Grundlagen
Elementares Kommandos
Gro- und Kleinschreibung sind beliebig! Get-Alias Alias-Namen anzeigen
Cursortasten: letzte Befehle anzeigen/bearbeiten Get-ChildItem Directory-Listing
[Tab] Befehl/Dateinamen/Optionen ergnzen Show-Command Get-Process Kommandos mit grafischem Frontend
^C Abbruch von laufenden Programmen Get-EventLog -logname application -newest 10
` Zeilenumbruch entwerten (Accent Grve!) Neueste 10 Ereignisse anzeigen lassen
[ret][ret] Abschluss fr manuelle Texteingabe Get-Service Alle Dienste anzeigen
; Befehlstrenner Get-Process Alle Prozesse anzeigen
Get-History Letzten Befehle anzeigen Get-PSSnapin Powershell-Erweiterungen anzeigen
F7 Pop-Up: Befehl wiederholen Start-Sleep -m 500 500 ms Pause
Hilfen [intptr]::size * 8 Zeigt Anzahl Bits fr Integer an
Get-Alias -? Hilfe zum CmdLet Get-Alias Objekt-Zugriff
Get-Help Get-Alias -Det Detaillierte Hilfe zum CmdLet Get-Alias Get-Member Methoden + Eigenschaften anzeigen ("gm")
Get-Help * Zeigt alle Hilfethemen an. Bsp.: Get-Date | gm *
-detailed Erweiterte Anzeige mit Beispielen Format-List * Alle Eigenschaften anzeigen (fl")
-full Komplette technische Hilfe Bsp.: Get-Date | fl *
Get-Help *Objekt* Zeigt Themen mit "Objekt" im Namen $_. Zugriff auf aktuelles Objekt (foreach, where)
Get-Help about* Hilfe zu Powershell-Anweisungen (Get-Host).privatedata Zugriff auf Eigenschaften eines Objekts
Get-Help about_wildcard Hilfe zu Wildcards (get-host).PrivateData.ErrorForegroundColor="yellow"
Get-Help about_commonparameters Fehlerbehandlung etc. (Get-Host).GetType() Zugriff auf Methoden enes Objekts
z.B. ErrorAction SilentlyContinue (Get-Process).count Anzahl Objekte ermitteln
Update-Help Hilfedateien aktualisieren [DateTime]::Now Statischer Zugriff, [DateTime]::IsLeapYear(2012)
Informationen zu Kommandos: Variablen
Get-Command *process* Alle mit "process" im Namen $a = "Stefan Menne" Variable neu anlegen
Get-Alias * Alias-Namen zeigen ("get-alias g*") $a Variable anzeigen
Internet-Tipps: $b = Get-Process Kommandoausgabe speichern
blogs.msdn.com/Powershell Microsoft Entwickler [int] $a = 32 Typvorgabe
Terminal ($a).Length Lnge ausgeben
$a,$b,$c = 1,2,3 Mehrfach-Zuweisung
Clear-Host Terminal lschen
$nn,$vn = "Stefan;Menne".split(";") Mehrfach-Zuweisung mit Split()
Get-Host Infos anzeigen
$a,$b = $b,$a Inhaltstausch
Start-Transcript Bildschirmprotokoll anfertigen
Set-Variable -name pi -value 3.1415 -option constant Konstante
Stop-Transcript Stoppen des Bildschirmprotokolls
Set-Variable -name euro -value 1.382 -option readonly Nur Lesen
Ausgabe Zugriff auf verbundene Variablen:
Write-Host "Text" Bildschirmausgabe, Optionen: Get-EventLog System | % { "$($_.EntryType) : $($_.Message)" }
-ForegroundColor green -BackgroundColor red -NoNewline Automatische Variablen:
Farben: Black,Gray,Blue,Green,Cyan,Red,Magenta,Yellow,White, DarkRed, $$ Letztes Token der letzten Kommandozeile
Write-Output Einfache Textausgabe, Aliase: echo, write $? Return-Code des letzten Kommandos
Write-Error Text als Fehler ausgeben $^ Erstes Token der letzten Kommandozeile: i.A. Kommando
Get-Content Inhalt einer Datei ausgeben $_ Aktuelles Pipeline-Objekt
Format-Table Tabellarisch anzeigen , Option: -AutoSize $Args Argumente des Scripts
Format-List Zeilenweise Eigenschaften anzeigen (fl) Variablen zur Programmierung:
Format-Wide -column 2 Mehrspaltige Ausgabe $true Boolean WAHR
Out-GridView Grafische Anzeige $false Boolean FALSCH
Out-Host -Paging In einer Pipe: Seitenweises Anzeigen Test-Path Variable:xxx Existenz testen
Out-File out.txt Ausgabe in Datei speichern (-Append) $null "nichts", also ein NULL-Objekt (zum Lschen von Objekten)
Out-Printer Direktes Ausdrucken $OFS Trennzchn fr Konvert. von Arrays zu String (Default: space)
Sonder-Codes: (Wie Unix \)
Arrays
`' -- Single quote `" -- Double quote `0 -- Null
@() Leeres Array
`a -- Alert `b -- Backspace `f -- Form feed
@(7) Array mit einem Element
`n -- New line `r -- Carriage return `t -- Horizontal tab
@(1..50) Array mit 50 Elementen
Bsp: Write-Host "Zeilen`numbruch`$alpha"
$a = 1, 'zwei', 'drei', 4 Array definieren
Konvertierung von Pipe-Daten:
$a[2] Array-Element anzeigen
ConvertTo-Html Ausgeben als HTML
$a[0..2] Mehrere El. anzeigen, $a[-2..-1]
ConvertTo-SecureString Verschlsselt ausgeben
$a.Length Anzahl Elemente
Export-Csv Ausgeben als CSV
$b=@(Get-Process) Array mit Prozessen erstellen
Export-Clixml Ausgeben als XML
$c=$a + $b Zwei Arrays zusammenfgen
Here-Scripte: $a =@" $a =@
Assoziative Arrays: {..}
Ein langer Text langer Text
$a = @{} Leeres assoziatives Array
mit $(3+4) ohne Variablen
$a+=@{Anton = 1} Element hinzufgen
"@ @
@{Autos=3; Kinder=5} assoziatives Array definieren
Ausgaben-Umlenkung $a=[ordered]@{Huser=2; Autos=7; Kinder=3}
Kanle: * Alles, 1=stdout, 2=stderr, 3=Warnung, 4=Verbose, 5=Debug Sortiertes Array erzeugen
1> datei stdout in Datei Dateiverarbeitung:
1>> datei stdout an Datei anhngen Daten-Datei "user.txt":
2> datei stderr umlenken sorglos;Sorglos;Susanne
5>&1 Debugmeldungen mit ausgeben
wolters;Wolters;Willi
Befehlssubstitution:
Powershell-Script:
$(cmd) z.B. Stop-Process $(ps | ? {$_.Name -match "fox" })
foreach ($User in Get-Content "user.txt") {
Datumsberechnungen
$LoginName, $Name, $Vorname = $User.split(;)
Get-Date -uformat "%Y-%m-%d" Unix-Formatierung write-host "'$LoginName': $Vorname $Nachname"
(Get-Date).AddDays(100) Tage addieren }
(Get-Date -date "2010-3-12").AddDays(200) Tage nach einem Datum
CSV-Datei "user.csv":
((Get-Date -date "1989-09-26").AddYears(30)).DayOfWeek Wochentag
((Get-Date -date "2038-01-01") - (Get-Date "0:00")).Days Differenz Logname,Nachname,Vorname,Funktion
Freigaben sorglos,Sorglos,Susanne,Dozent
wolters,Wolters,Willi,Studierender
Freigaben:
New-Item C:\Public" type directory Powershell-Script:
New-SmbShare -FullAccess "Jeder" -name Public -path "C:\Public" foreach($i in Import-Csv "daten.csv" ) { echo $i.Nachname }
Get-SmbShare Freigaben anzeigen # oder:
Get-SmbShareAccess Public Rechte abrufen Import-Csv .\daten.csv | % { $_.Nachname }
Profile
$Profile Autostart-Datei fr PS (auch PS-ISE)
notepad $Profile Profile-Datei bearbeiten

27.06.2017 Seite 2 2008-2017 Stefan.Menne@gmx.de


PowerShell-Referenz

Tools Verschiedenes
Powershell-Tools Provider
Select-Object (Alias: "select") Provider-Arten:
[-property] ID,Name Eigenschaften auswhlen Get-PSProvider Alle Provider anzeigen (Drives beachten!)
-first 7 die ersten 7 Datenstze Get-PSDrive Anzeige aller Laufwerke
-last 12 die letzten 12 Datenstze Bsp: cd HKLM: In Registry-Ordner HKLM wechseln
-unique gleiche Datenstze unterdrcken New-PSDrive -Name remote PSProvider FileSystem Root \\ds\doz
Bsp: get-Process | Select-Object -property ws,cpu,name -first 5 Neues Laufwerk remote: erzeugen (statt: net use Z: \\ds\doz)
@{Name= "Zeit"; Expression= {$_.Cpu} } Eigene Spalten Remove-PSDrive remote Laufwerk entfernen
Bsp: ls | Select Name, @{ N="Datum";E={ $_.LastWriteTime} }, Item-Tools:
@{ N="Alter";E={ ((Get-Date) - $_.CreationTime).Days} } Ein Item kann ein Verzeichnis, Registry-Eintrag, Variable, Active-Directory-
Sort-Object (Alias: "sort") Eintrag oder Datei sein.
[-property] Name Sortierung nach der Eigenschaft Get-Item . Aktuelles Objekt holen/anzeigen
-unique gleiche Datenstze unterdrcken Get-ChildItem . Items des auflisten (-Recurse)
-descending absteigend sortieren Get-ItemProperty . Eigenschaften vom akt. Obj. abrufen
-caseSensitive Gro-/Kleinschreibung beachten! New-Item -path H:\ -name test.txt -type file -value Inhalt
Bsp: get-childitem | sort-object -property length -descending Item Objekt anlegen
Measure-Object Set-Item Existierendes Objekt mit Wert belegen
-property Clear-Item Inhalt lschen
-average|sum|minimum|maximum Zahlen Weitere Befehle: Copy-Item, Remove-Item, Rename-Item, Move-Item
-line|word|character Text Location-Befehle:
Bsp: get-childitem | measure-object -property length -min -max -av Get-Location Aktuellen Ort anzeigen
Where-Object (Alias: "?", where) Set-Location Ort wechseln
Bsp: get-service | where-object { $_.Status -eq "Stopped"} Push-Location Aktuellen Ort in Stack speichern
get-process | where {$_.ws -gt 10MB -and $_.cpu ge 10} Pop-Location Zum letzten Ort aus dem Stack wechseln
Zugriff auf Systemumgebungen
Falls nur 3 Parameter ntig sind: .NET:
get-process | where Workingset -gt 10MB $web = new-object System.Net.WebClient (ca. 12 Klassen relevant)
Foreach-Object (Alias: "%", foreach) $web.DownloadFile(https://www.bib.de/, d:\bib.html)
Bsp: @(30,40,80,200) | ForEach-Object { $_ / 10 } (Auch: Invoke-WebRequest https://www.bib.de/)
400,600,800,100 | ForEach-Object { [Console]::Beep($_,200) } $d = New-Object -Type System.DateTime 2019,9,26
ls c:\ | % { $d.get_DayOfWeek()
$n+=1 [Math]::Pi [Math]::Sin(x)
Write-Host "$n : $($_.name)" COM:
} $obj = New-Object -comobject "wscript.network"
Foreach-Anweisung: (siehe unter: Schleifen, S.4) $obj.username
foreach ($i in Get-Process) { $i} WMI:
Operatoren Get-WmiObject -List
Standard-Operatoren: Get-WmiObject -List | ? {$_.Name -match "Share"}
+ - * / % = += -= *= /= %= ++ -- Get-WmiObject win32_bios
Vergleiche: Get-WmiObject win32_service -computername 127.0.0.1 | ft
-eq ( == ) -ne ( != ) -gt ( > ) -ge ( >= ) -lt ( < ) -le ( <= ) Dialogboxen
42 is [int] Typ-Vergleich $x=[reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
42 as [string] Typ-Konvertierung [System.Windows.Forms.MessageBox]::Show("Meldung", Ueberschrift,
String-Vergleiche: Buttons, Art)
lauf match [abc] (-notmatch) Buttons: Rckgabwerte:
Stefan like S* (-notlike) 0 = OK 0 = nichts gedr. 4 = Retry
2,3,4 contains 3 (-notcontains) 1 = OK, Abbrechen 1 = Ok 5 = Ignore
2 = Abbrechen, Wiederholen, OK 2 = Cancel 6 = Yes
Berta in Anton,Berta,Claus (-notin) 3 = Ja, Nein, Abbrechen 3 = Abort 7 = No
Logische Operatoren: 4 = Ja, Nein
-and -or -not -xor ! 5 = Wiederholen, Abbrechen
Formatierung der Ausgabe Symbol Werte:
Formatierung mit f: { index[,alignment][:formatString]} K04_13 Frage 32 K04_15 Warnung 48
Bsp: "{0,-10}" Parameter 0: 10 Stellen linksbndig K04_14 Fehler/Stopp 16 K04_16 Info 64
"{0,20} Parameter 0: 20 Stellen rechtsbndig Zugriffsrechte ACL
"{0,10:N2}" Zahl mit 10 Stellen, 2 Nachkomma $Datei = "C:\test.txt" Datei muss existieren
{0,10:F1} Fliekommazahlen 10 Stellen, 1 NK $acl = Get-Acl $File
Format-Codes: {Index:Code[Genauigkeit]} $zugriff = "bibtest\sorglos","FullControl","Allow"
Codes: N (Zahl) C (Whrung), D (Dezimal), P (Prozent), X (Hex.) Accounts ermitteln mit: Get-WmiObject Win32_Account
Oder: $a = 47.111; $a.tostring(0000.00) $regel = New-Object System.Security.AccessControl.FileSystemAccessRule $zugriff
Beispiel: $acl.SetAccessRule($accessRule)
"{0} {1}" -f "Anton", 23 $acl | Set-Acl $Datei
$x = "{0,8:N2} GB von {1,8:N2} GB sind frei" -f 345.34, 876.3325
write-host -f "green" $x
Netzwerk
Strings IP anzeigen/setzen
Get-NetIPInterface -AddressFamily IPv4
String-Operatoren:
Remove-NetIPAddress -InterfaceAlias "Ethernet0" -AddressFamily "IPv4" `
Hans + Wurst Strings zusammenfgen
-Confirm:$false
Hans* 50 Zeichenkette wiederholen
Remove-NetRoute -InterfaceAlias "Ethernet0" -Confirm:$false
Member-Functions: (text | gm)
New-NetIPAddress -InterfaceAlias "Ethernet0" -AddressFamily "IPv4" `
go east replace east,west Ersetzung
-IPAddress 10.1.1.1 -PrefixLength 8 -DefaultGateway 10.0.0.1
$a,$b,$c = "Hans,Berta,Claus" -split ","
Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" -ServerAddr 10.0.0.1
$a,$b,$c = "Hans,Berta,Claus".split(",") String splitten+zuweisen
"Stefan","Menne" -join "." Strings verbinden Zugriff auf Fremdrechner
"HansWurst.jpg".TrimStart("Hans") Anfang entfernen Remoting ermglichen:
"Ein Text".ToUpper() Groschrift Winrm quickconfig; Enable-PSRemoting Force
"Ein Text".ToLower() Kleinschrift Set-Item WSMan:\localhost\client\TrustedHosts *
"Ein Text".Insert(4, "toller ") Text einfgen Set-Item WSMan:\localhost\client\TrustedHosts 10.0.0.1
"Ein Text".compareTo("Ein Test") Vergleich Restart-Service WinRM
"Ein Text".Contains("Ein") Auf Enthalten prfen Zugriffsarten:
"Ein Text".Chars(5) Ein Zeichen herausholen a) per Kommando:
" Ein Text ".Trim() Text trimmen $pw = Get-Credential Administrator
" Ein Text ".Length Lnge ermitteln Invoke-Command -ComputerName 192.168.10.128 -ScriptBlock { Get-
" Ein Text ".TrimEnd().Length Am Ende trimmen ChildItem C:\ } -credential $pw
"Ein Text".Substring(4) Substring ab Pos. 4 b) Session starten:
"Ein Text".Substring(4,2) Substring mit Lnge 2 Enter-PSSession 192.168.10.128
"Ein Text".Remove(2,4) Zeichen lschen

27.06.2017 Seite 3 2008-2017 Stefan.Menne@gmx.de


PowerShell-Referenz

Scripte ActiveDirectory
Script-Einstellung AD-Tools
Get-ExecutionPolicy Aktuelle Einstellung abfragen Active-Directory Module installieren/deinstallieren:
Set-ExecutionPolicy RemoteSigned Scripte erlauben Install-WindowsFeature AD-Domain-Services
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser falls nicht Admin Import-Module ADDSDeployment
Typen: Restricted, RemoteSigned, AllSigned, Unrestricted Import-Module ActiveDirectory Laden des AD-Moduls
Scripte, Programme starten Install-ADDSForest -DomainName "test.de" SafeModeAdministratorPass $pw
& befehl Befehl in neuer Umgebung starten Install-WindowsFeature RSAT-AD-AdminCenter
. script.ps1 Befehl in aktueller Umgebung starten Uninstall-ADDSDomainController LocalAdministratorPassword $pw `
powershell.exe -noexit &"c:\machwas.ps1" LastDomainControllerInDomain -RemoveApplicationPartitions
& $string Anweisungen im String ausfhren Active-Directory als Provider (Get-PSProvider):
(oder: Invoke-Expression "dir *.exe") cd ad: Ins Active-Directory wechseln
Debug-Level setzen: ls Aktuelles AD-Verzeichnis auflisten
Set-Psdebug -step Schrittweise Ausfhrung von Scripten cd "DC=bib,DC=de" Ins AD wechseln
Set-PsDebug -trace 1 Debug-Level setzen cd "CN=Users" In den Ordner Users wechseln
Andere Programme starten: cd "AD:\CN=Users,DC=bib,DC=de" Absolute Adressierung
&'C:\Programme\Microsoft Office\Office\EXCEL.EXE' Test.xls get-command *-AD* Alle Kommandos zu AD zeigen
start excel.exe .\Test.xls Programm starten (Start-Process) Informationen abfragen:
Kommentare Get-ADDomain Anzeige der aktuellen Domain
# Kommentar bis Ende Zeile Get-ADDomainController
<# mehrzeiliger Block-Kommentar Get-ADUser -Filter * Properties * Alle Benutzer + Eigenschaften
Kommentar #> Get-ADUser dozmen Properties * Alle Eigenschaften zum Benutzer holen
Wertebergabe, Variablen Get-ADComputer -Filter * Computer auflisten
User anlegen, lschen:
Interaktive Eingabe:
$erg = Read-Host "Bitte eine Zahl eingeben" New-ADUser -name "Stefan Menne" -samAccountName dozmen `
$passwort = Read-Host "Passwort" -AsSecureString -UserPrincipalName dozmen@bib.de -AccountPassword $pw `
Kommandozeilen-Argumente in C-Stil: -Path "CN=Users,DC=bib,DC=de" -enabled $true
$args[0].. $args[n] Argumente User whlen ber: samAccountName, DistinguishedName oder SID
$^ Kommandozeilen-Programmname Name: DisplayName, GivenName, Surname, OtherName, EmailAddress,
Kommandozeilenparameter in PowerShell-Stil DistinguishedName, SID
param ( [Int] $Alter, [String] $Name = "Menne", [Switch] $Aktiv) Account: UserPrincipalName, AccountPassword, ChangePasswordAtLogon,
Aufrufmglichkeiten: .\script.ps1 40 Meierhofer Enabled, samAccountName
.\script.ps1 -Name Mller -Alter 50 -Aktiv Adresse: City, Country, PostalCode, State, StreetAddress
Parameter erzwingen mit: [parameter(Mandatory = $true)] Pfade: HomeDirectory, HomeDrive, ProfilePath, ScriptPath
Hilfen: get-help about_functions_advanced_parameters Remove-ADUser dozmen -Confirm:$false
Parameter-Typ-Deklaration: User-Daten verndern/ergnzen:
Zahlen: [int], [long], [double], [decimal], [float], [single], [byte] Set-ADUser dozmen -HomeDirectory "\\Win2K12R2B\Home\$logname" `
Zeichen: [string], [char] Datum: [datetime] "11.4.2011" -HomeDrive "H:" -ProfilePath "\\Win2K12R2B\Home\$logname\Profile"
Switch: [Switch] $test Dann: if ($test) . Set-ADAccountPassword dozmen -NewPassword $pw
Weitere Type: [bool], [array], [hashtable], [xml],[ADSI] [ADS], [WMI] Organisationseinheiten:
Gltikeitsbereich-Deklarationen: New-ADOrganizationalUnit -Name "Firma" -Path "DC=bib,DC=de"
$global:a=1 berall gltig $script:a=1 nur im Script gltig Get-ADOrganizationalUnit -Filter *
$local:a=1 ab hier gltig $using:a=1 nur im Start-Job gltig (Remove-ADOrganizationalUnit, Set-ADOrganizationalUnit)
$private:a=1 Variable nur hier gltig Gruppen:
Funktionen Get-ADGroup -Filter *
Variante A: Funktionsparameter Objekte verschieben:
function summe ($a = 3, $b = 7) { return $a + $b } Move-ADObject "CN=Stefan Menne, -TargetPath "DC=bib,DC=de
Aufruf: summe 17 04 Testen auf Existenz:
Variante B: benannte Parameter Get-ChildItem "AD:\CN=Stefan Menne,DC=bib,DC=de" 2>&1 > > $null
function summe { param ($WertA = 5, $WertB = 10) if ( ! $?) { } # User existiert noch nicht
return $WertA + $WertB DHCP
} Tools: DHCP installieren (deinstallieren mit Remove-):
Aufruf: summe -WertA 2 -WertB 3 Install-WindowsFeature DHCP -IncludeManagementTools
summe 4 7 DHCP-Server in ActiveDirectory (DC) registrieren:
summe -WertB 4 Add-DhcpServerInDC -DnsName "bibtest.de"
Schleifen Add Scopes:
Zhlschleife: Add-DhcpServerv4Scope -StartRange 192.168.10.10 EndRange`
for ($i = 0; $i le 20; $i++) {Write-Host $i} 192.168.10.254 -SubnetMask 255.255.255.0 `
foreach ($i in 0..20) {$i} -Name IP-Test-Bereich -Description "Test" Verbose
0..20 dasselbe in kurz Alle DHCP-Scopes aktivieren:
Durcharbeiten von Arrays/CmdLets: Get-DhcpServerv4Scope | Set-DhcpServerv4Scope -State Active
foreach ($i in $Array) { echo $i } DHCP-Optionen setzen:
foreach ($file in Get-ChildItem) { Write-Host $file } Set-DhcpServerv4OptionValue -DnsDomain menne.de `
ps | foreach Begin { $i=0} ` -Router 192.168.10.2 -DnsServer 192.168.10.3 Force
Processs {$i++} ` Einzelnen Bereich lschen:
End {"# Prozesse: " + $i} Remove-DhcpServerv4Scope -ScopeId 192.168.10.0
kurz: ps | foreach {$i=0} {$i++} {$i} DHCP-Server an Netzwerkinterface binden:
Weitere Strukturen: Set-DhcpServerv4Binding -BindingState $true -InterfaceAlias Ethernet
if (<Test1>) {<Anweisungsliste 1>} Get-DhcpServerv4Scope
[elseif (<Test2>) {<Anweisungsliste 2>}] DNS
[else {<Anweisungsliste 3>}] DNS installieren:
switch ( Montag ) { Install-WindowsFeature -Name 'DNS' IncludeManagementTools
"Montag" { echo Mon ; break } DNS-Zonen erstellen:
default { echo Was anderes } Add-DnsServerPrimaryZone -Name "bib.de" -ReplicationScope Forest
} Add-DnsServerPrimaryZone -Name "5.0.10.in-addr.arpa" `
do {<Anweisungsliste>} while (<Bedingung>) -DynamicUpdate Secure -ReplicationScope Forest
while (<Bedingung>) do {<Anweisungsliste>} DNS-Eintrge erstellen:
try { kommando > $NULL} catch{}; if ( ! $?) { } Add-DnsServerResourceRecordA -ZoneName "bib.de" `
Passwrter -Name "anton" -IPv4Address 10.0.5.1
$pw=ConvertTo-SecureString -AsPlainText -Force -String "EinTest.11" Add-DnsServerResourceRecordPtr -ZoneName "5.0.10.in-addr.arpa"`
Dekodieren: -Name 1 -PtrDomainName 'anton.bib.de'
$pw = Read-Host "Passwort eingeben " AsSecureString DNS-Zonen abfragen:
[Runtime.InteropServices.Marshal]::PtrToStringAuto( Get-DnsServerZone
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($pw)) Get-DnsServerResourceRecord 10.20.172.in-addr.arpa
Get-DnsServerRootHint

27.06.2017 Seite 4 2008-2017 Stefan.Menne@gmx.de


PowerShell-Referenz

Dialog-Verarbeitung
Formulare
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$Form=New-Object "System.Windows.Forms.Form"
$Form.TopMost = $true
$Form.Text="Dies ist ein leeres Formular!"

# Textinhalt erzeugen:
$label=New-Object "System.Windows.Forms.Label"
$label.Text='Hallo Welt'; $label.Top=10

# Button erstellen:
$button = New-Object "System.Windows.Forms.Button"
$button.Text = "OK"; $button.Top=200
$button.Add_Click({$form.Close()}) # Aktion nach dem Klicken!

# Alles in die Form einfgen:


$form.Controls.Add($label)
$form.Controls.Add($button)
$form.ShowDialog()

Weitere Mglichkeiten
Get-Module -list -All
import-Module PowerShellGet
Install-Module *get-eventlog*
Get-NetFirewallRule
Get-Command *fire*

Diese Referenz ist im Rahmen meiner Unterrichtsttigkeit am bib


entstanden. Die Anordnung und Auswahl der Befehle ist aus meinen
persnlichen Bedrfnissen fr unterrichtliche Zwecke entstanden.

Verwenden Sie diese Referenz als Nachschlagewerk fr PowerShell-


Befehle. Sie darf frei fr Lehrveranstaltungen kopiert und verteilt werden
(Relevant sind die Seiten 1-4), wenn mein Copyright unten auf jeder Seite
lesbar bleibt.

Anregungen und Meinungen schreiben Sie bitte an:


Stefan.Menne@gmx.de

27.06.2017 Seite 5 2008-2017 Stefan.Menne@gmx.de