# gibt eine Liste der Funtionen, Aliases, Cmdlets etc. Get-Command
# Funktion definieren
Function <FunctionName>
{
<Anweisungsblock>
}
# Funktion aufrufen <FunctionName> [-Parameter1 [Wert1]] [-ParameterN [WertN]]
#
Function Get-DiskDrive
{
Get-PSDrive -PSProvider FileSystem
}
> MeineSkripte\MeineFunktionen.ps1 > # ab jetzt sind alle dort definierten Functions verfügbar
# Abfragen (auf der Konsole) ob eine Ausführung erlaubt ist: Get-ExecutionPolicy # Setzen: Set-ExecutionPolicy -ExecutionPolicy <PolicyName> # Es gibt RemoteSigned / Unrestricted / AllSigned ...
. .\MeineFunktionen.ps1
# klassisch:
Function <Name>
{
Param ($Parameter1[, $ParameterN])
<Anweisungsblock>
}
# Neu (funktioniert nur bei Functions aber nicht bei Skriptenparametern):
Function <Name> [($Parameter1[, $ParameterN])]
{
<Anweisungsblock>
}
Function Get-LargeFiles ($Length)
{
Get-ChildItem C:\Windows | Where-Object {$_.Length -ge $Length}
}
# Mit Werten vorbelegen
Function Get-LargeFiles ($Location="C:\Windows", $Length=200)
{
Get-ChildItem $Location | Where-Object {$_.Length -ge $Length}
}
Function Get-MyProcess ($Length)
{
Get-Process -Name s* | `
Select -Property ID, ProcessName, CPU | `
Sort -Property CPU -Descending
}
Function Test-Switch ([switch]$AnAus) { if($AnAus) { # ... } else { # ... } }
Function Get-LargeFiles ($groesse, [switch]$sortieren) { $ausgabe = Get-ChildItem -Path C:\Windows -File | Where { $_.Length -ge $groesse} if($sortieren) { $ausgabe | Sort -Property Length } else { $ausgabe } }
Function <Name> { Begin { # Anweisungsblock, der am Anfang ausgeführt wird } Process { # Anweisungsblock, der mit jedem Element ausgeführt wird } End { # Anweisungsblock, der am Ende ausgeführt wird } }
Function Get_Pipe1 { Begin { # Anweisungsblock, der am Anfang ausgeführt wird Write-Host "Pipeline Funktion gestartet" } Process { # Anweisungsblock, der mit jedem Element ausgeführt wird Write-Host "Wert des aktuellen Objektes $_." } End { # Anweisungsblock, der am Ende ausgeführt wird Write-Host "Pipeline Funktion zu Ende ausgeführt" } } # Aufruf: 1,2,3 | Get_Pipe1
Begin { # Anweisungsblock, der am Anfang ausgeführt wird Write-Host "Pipeline Funktion gestartet" } Process { # Anweisungsblock, der mit jedem Element ausgeführt wird Write-Host "Wert des aktuellen Objektes $_." } End { # Anweisungsblock, der am Ende ausgeführt wird Write-Host "Pipeline Funktion zu Ende ausgeführt" } # Aufruf (jede Datei/Directory in C:\Windows wird an das Skript myPipeScript.ps1 übergeben) Get-ChildItem C:\Windows | .\myPipeScript.ps1
<#
.SYNOPSIS
Kurzbeschreibung...
.DESCRIPTION
Ausführliche Beschreibung...
.PARAMETER
Beschreibung Parameter 1...
.PARAMETER
Beschreibung Parameter 2...
.EXAMPLE
Beispiel 1...
.EXAMPLE
Beispiel 2...
.NOTES
Notizen...
.LINK
...
#>
Function: sind:Get-ChildItem Function:…Remove-Item …$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 $HOME\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1. C:\MeineSkripte\MeineFunktionen.ps1Function Get-MyMessage { Write-Host "Hier sind meine Funktionen gespeichert." } # Fügen Sie Ihrem Skript eine neue Funktion Get-MyProcess hinzu, die Prozesse auf Ihrem lokalen Rechner unter folgenden Bedingungen anzeigt: # Die anzuzeigenden Prozesse beginnen mit dem Buchstaben s. # Die Spalten ID, ProcessName und CPU sollen angezeigt werden. # Die Anzeige soll absteigend nach der Eigenschaft CPU sortiert werden. # Speichern Sie Ihr Skript, führen Sie es erneut aus und testen Sie die Funktion. Function Get-MyProcess { Get-Process -Name s* | Select-Object ID, ProcessName, CPU | Sort-Object CPU -Descending } # Kopieren Sie die Funktion Get-MyProcess und fügen Sie sie unter dem Namen Get-MyProcess2 # in Ihr Skript ein. Wandeln Sie die Funktion wie folgt ab: # Die Funktion soll einen Parameter $FilterName akzeptieren, der bestimmt, welche Prozesse angezeigt werden. # Standardwert: Es sollen Prozesse angezeigt werden, deren Name mit dem Buchstaben s # beginnt. # Über einen Switch-Parameter $Liste soll gesteuert werden, die Ausgabe als Liste zu sehen # (Format-List) und nicht als Tabelle. # Speichern Sie Ihr Skript, führen Sie es erneut aus und testen Sie die neue Funktion Function Get-MyProcess2 ($FilterName="s", [switch] $Liste) { $ausgabe = Get-Process -Name "$FilterName*" | Select-Object ID, ProcessName, CPU | Sort-Object CPU -Descending if($Liste) { $ausgabe = $ausgabe | Format-List } $ausgabe }
Und dann:
Get-LocalUserGet-LocalUser | Get-MemberNew-LocalUserC:\Windows\System32\drivers\etc\lmhostsC:\Windows\System32\drivers\etc\hostsipconfig /displaydnsipconfig /flushdnsW22DC02 installieren