PowerShell
Module, Skripte und Funktionen
Suche…
Einführung
PowerShell-Module bieten Erweiterungen für Systemadministrator, DBA und Entwickler. Ob es sich einfach um eine Methode handelt, um Funktionen und Skripte gemeinsam zu nutzen.
Powershell-Funktionen dienen zur Vermeidung von Wiederholungscodes. Siehe [PS-Funktionen] [1] [1]: PowerShell-Funktionen
PowerShell-Skripts werden für die Automatisierung von Verwaltungsaufgaben verwendet, die aus einer Befehlszeilen-Shell und zugehörigen, auf .NET Framework aufgebauten Cmdlets bestehen.
Funktion
Eine Funktion ist ein benannter Codeblock, mit dem wiederverwendbarer Code definiert wird, der einfach zu verwenden ist. Es ist normalerweise in einem Skript enthalten, um die Wiederverwendung von Code zu erleichtern (um doppelten Code zu vermeiden) oder als Teil eines Moduls verteilt zu werden, damit er für andere in mehreren Skripts nützlich ist.
Szenarien, in denen eine Funktion nützlich sein kann:
- Berechnen Sie den Durchschnitt einer Zahlengruppe
- Generieren Sie einen Bericht für laufende Prozesse
- Schreiben Sie eine Funktion, die testet, ob ein Computer "in Ordnung" ist, indem Sie einen Ping-Befehl an den Computer senden und auf die
c$
-share zugreifen
Funktionen werden mit dem function
, gefolgt von einem einzelnen Wortnamen und einem Skriptblock, der den Code enthält, der beim Aufruf des Funktionsnamens ausgeführt werden soll.
function NameOfFunction {
Your code
}
Demo
function HelloWorld {
Write-Host "Greetings from PowerShell!"
}
Verwendungszweck:
> HelloWorld
Greetings from PowerShell!
Skript
Ein Skript ist eine Textdatei mit der Dateierweiterung .ps1
, die PowerShell-Befehle enthält, die beim Aufruf des Skripts ausgeführt werden. Da es sich bei Skripts um gespeicherte Dateien handelt, können sie problemlos zwischen Computern übertragen werden.
Skripts werden häufig geschrieben, um ein bestimmtes Problem zu lösen, z. B .:
- Führen Sie eine wöchentliche Wartungsaufgabe aus
- So installieren und konfigurieren Sie eine Lösung / Anwendung auf einem Computer
Demo
MyFirstScript.ps1:
Write-Host "Hello World!"
2+2
Sie können ein Skript ausführen, indem Sie den Pfad zur Datei mit folgendem Befehl eingeben:
- Absoluter Pfad, z.
c:\MyFirstScript.ps1
- Relativer Pfad, z
.\MyFirstScript.ps1
wenn das aktuelle Verzeichnis der PowerShell-KonsoleC:\
Verwendungszweck:
> .\MyFirstScript.ps1
Hello World!
4
Ein Skript kann auch Module importieren, eigene Funktionen definieren usw.
MySecondScript.ps1:
function HelloWorld {
Write-Host "Greetings from PowerShell!"
}
HelloWorld
Write-Host "Let's get started!"
2+2
HelloWorld
Verwendungszweck:
> .\MySecondScript.ps1
Greetings from PowerShell!
Let's get started!
4
Greetings from PowerShell!
Modul
Ein Modul ist eine Sammlung verwandter wiederverwendbarer Funktionen (oder Cmdlets), die problemlos an andere PowerShell-Benutzer verteilt und in mehreren Skripts oder direkt in der Konsole verwendet werden können. Ein Modul wird normalerweise in einem eigenen Verzeichnis gespeichert und besteht aus:
- Eine oder mehrere
.psm1
mit der Erweiterung.psm1
, die Funktionen enthalten, oder binäre Assemblys (.dll
), die Cmdlets enthalten - Ein
.psd1
, das den.psd1
, die Version, den Autor, die Beschreibung, die von ihm.psd1
Funktionen / Cmdlets usw. beschreibt. - Andere Voraussetzungen für die Arbeit inkl. Abhängigkeiten, Skripte usw.
Beispiele für Module:
- Ein Modul mit Funktionen / Cmdlets, die Statistiken für eine Datenmenge ausführen
- Ein Modul zum Abfragen und Konfigurieren von Datenbanken
Damit PowerShell ein Modul leicht finden und importieren kann, befindet es sich häufig an einem der bekannten Speicherorte für PowerShell-Module, die in $env:PSModulePath
.
Demo
Listen Sie Module auf, die an einem der bekannten Speicherorte des Moduls installiert sind:
Get-Module -ListAvailable
Ein Modul importieren, z. Hyper-V
Modul:
Import-Module Hyper-V
Liste der verfügbaren Befehle in einem Modul, z. das Microsoft.PowerShell.Archive
-Modul
> Import-Module Microsoft.PowerShell.Archive
> Get-Command -Module Microsoft.PowerShell.Archive
CommandType Name Version Source
----------- ---- ------- ------
Function Compress-Archive 1.0.1.0 Microsoft.PowerShell.Archive
Function Expand-Archive 1.0.1.0 Microsoft.PowerShell.Archive
Erweiterte Funktionen
Erweiterte Funktionen verhalten sich wie Cmdlets. Die PowerShell ISE umfasst zwei Skelette mit erweiterten Funktionen. Rufen Sie diese über das Menü, Bearbeiten, Codeausschnitte oder durch Drücken von Strg + J auf. (Ab PS 3.0 können spätere Versionen abweichen)
Zu den wichtigsten Funktionen der erweiterten Funktionen gehören:
- integrierte, angepasste Hilfe für die Funktion, auf die über
Get-Help
- kann [CmdletBinding ()] verwenden, wodurch die Funktion wie ein Cmdlet wirkt
- umfangreiche Parameteroptionen
Einfache Version:
<#
.Synopsis
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
#>
function Verb-Noun
{
[CmdletBinding()]
[OutputType([int])]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$Param1,
# Param2 help description
[int]
$Param2
)
Begin
{
}
Process
{
}
End
{
}
}
Komplette Version:
<#
.Synopsis
Short description
.DESCRIPTION
Long description
.EXAMPLE
Example of how to use this cmdlet
.EXAMPLE
Another example of how to use this cmdlet
.INPUTS
Inputs to this cmdlet (if any)
.OUTPUTS
Output from this cmdlet (if any)
.NOTES
General notes
.COMPONENT
The component this cmdlet belongs to
.ROLE
The role this cmdlet belongs to
.FUNCTIONALITY
The functionality that best describes this cmdlet
#>
function Verb-Noun
{
[CmdletBinding(DefaultParameterSetName='Parameter Set 1',
SupportsShouldProcess=$true,
PositionalBinding=$false,
HelpUri = 'http://www.microsoft.com/',
ConfirmImpact='Medium')]
[OutputType([String])]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false,
Position=0,
ParameterSetName='Parameter Set 1')]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[ValidateCount(0,5)]
[ValidateSet("sun", "moon", "earth")]
[Alias("p1")]
$Param1,
# Param2 help description
[Parameter(ParameterSetName='Parameter Set 1')]
[AllowNull()]
[AllowEmptyCollection()]
[AllowEmptyString()]
[ValidateScript({$true})]
[ValidateRange(0,5)]
[int]
$Param2,
# Param3 help description
[Parameter(ParameterSetName='Another Parameter Set')]
[ValidatePattern("[a-z]*")]
[ValidateLength(0,15)]
[String]
$Param3
)
Begin
{
}
Process
{
if ($pscmdlet.ShouldProcess("Target", "Operation"))
{
}
}
End
{
}
}