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-Konsole C:\

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
    {
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow