Szukaj…


Wprowadzenie

Moduły PowerShell dają możliwość rozszerzenia administratorowi systemu, DBA i deweloperowi. Czy to po prostu metoda dzielenia się funkcjami i skryptami.

Funkcje PowerShell mają na celu unikanie powtarzalnych kodów. Zobacz [Funkcje PS] [1] [1]: Funkcje PowerShell

Skrypty PowerShell służą do automatyzacji zadań administracyjnych, które składają się z powłoki wiersza polecenia i powiązanych poleceń cmdlet zbudowanych na platformie .NET Framework.

Funkcjonować

Funkcja to nazwany blok kodu, który służy do definiowania kodu wielokrotnego użytku, który powinien być łatwy w użyciu. Zazwyczaj jest on zawarty w skrypcie, aby pomóc w ponownym użyciu kodu (aby uniknąć duplikacji kodu) lub rozpowszechniany jako część modułu, aby był przydatny dla innych w wielu skryptach.

Scenariusze, w których funkcja może być przydatna:

  • Oblicz średnią z grupy liczb
  • Wygeneruj raport dla uruchomionych procesów
  • Napisz funkcję, która sprawdza, czy komputer jest „zdrowy”, wysyłając polecenie ping do komputera i uzyskując dostęp do udziału c$

Funkcje są tworzone za pomocą słowa kluczowego function , po którym następuje nazwa pojedynczego słowa i blok skryptu zawierający kod, który należy wykonać, gdy wywoływana jest nazwa funkcji.

function NameOfFunction {
    Your code
}

Próbny

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

Stosowanie:

> HelloWorld
Greetings from PowerShell!

Scenariusz

Skrypt to plik tekstowy z rozszerzeniem .ps1 który zawiera polecenia programu PowerShell, które zostaną wykonane po wywołaniu skryptu. Ponieważ skrypty są zapisywanymi plikami, można je łatwo przenosić między komputerami.

Skrypty są często pisane w celu rozwiązania określonego problemu, np .:

  • Uruchom cotygodniowe zadanie konserwacyjne
  • Aby zainstalować i skonfigurować rozwiązanie / aplikację na komputerze

Próbny

MyFirstScript.ps1:

Write-Host "Hello World!"
2+2

Możesz uruchomić skrypt, wprowadzając ścieżkę do pliku za pomocą:

  • Ścieżka absolutna, np. c:\MyFirstScript.ps1
  • Ścieżka względna, np .\MyFirstScript.ps1 jeśli bieżącym katalogiem konsoli PowerShell był C:\

Stosowanie:

> .\MyFirstScript.ps1
Hello World!
4

Skrypt może również importować moduły, definiować własne funkcje itp.

MySecondScript.ps1:

function HelloWorld {
    Write-Host "Greetings from PowerShell!"
}

HelloWorld
Write-Host "Let's get started!"
2+2
HelloWorld

Stosowanie:

> .\MySecondScript.ps1
Greetings from PowerShell!
Let's get started!
4
Greetings from PowerShell!

Moduł

Moduł to zbiór powiązanych funkcji wielokrotnego użytku (lub poleceń cmdlet), które można łatwo dystrybuować do innych użytkowników PowerShell i używać w wielu skryptach lub bezpośrednio w konsoli. Moduł jest zwykle zapisywany we własnym katalogu i składa się z:

  • Co najmniej jeden plik kodu z rozszerzeniem .psm1 zawierający funkcje lub zespoły binarne ( .dll ) zawierające polecenia cmdlet
  • Manifest modułu .psd1 opisujący nazwę modułów, wersję, autora, opis, jakie funkcje / cmdlety udostępnia itp.
  • Inne wymagania do działania, w tym. zależności, skrypty itp.

Przykłady modułów:

  • Moduł zawierający funkcje / cmdlety, które wykonują statystyki dla zestawu danych
  • Moduł do zapytań i konfiguracji baz danych

Aby ułatwić programowi PowerShell wyszukiwanie i importowanie modułu, często umieszcza się go w jednej ze znanych lokalizacji modułów programu PowerShell zdefiniowanych w $env:PSModulePath .

Próbny

Lista modułów zainstalowanych w jednej ze znanych lokalizacji modułów:

Get-Module -ListAvailable

Zaimportuj moduł, np. Moduł Hyper-V :

Import-Module Hyper-V

Wyświetl listę dostępnych poleceń w module, np. moduł Microsoft.PowerShell.Archive

> 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

Zaawansowane funkcje

Zaawansowane funkcje zachowują się tak samo jak polecenia cmdlet. PowerShell ISE zawiera dwa szkielety zaawansowanych funkcji. Dostęp do nich można uzyskać za pomocą menu, edycji, fragmentów kodu lub Ctrl + J. (Począwszy od PS 3.0, nowsze wersje mogą się różnić)

Kluczowe rzeczy, które obejmują zaawansowane funkcje to:

  • wbudowana, dostosowana pomoc dla funkcji, dostępna za pośrednictwem Get-Help
  • można użyć [CmdletBinding ()], dzięki czemu funkcja działa jak cmdlet
  • rozbudowane opcje parametrów

Prosta wersja:

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

Pełna wersja:

<#
.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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow