Sök…


Introduktion

PowerShell-moduler ger utdragbarhet för systemadministratören, DBA och utvecklaren. Oavsett om det helt enkelt är en metod för att dela funktioner och skript.

Powershell-funktioner är att undvika repitetiva koder. Se [PS-funktioner] [1] [1]: PowerShell-funktioner

PowerShell-skript används för att automatisera administrativa uppgifter som består av kommandoradsskal och tillhörande cmdleter byggda ovanpå .NET Framework.

Fungera

En funktion är ett namnblock med kod som används för att definiera återanvändbar kod som ska vara lätt att använda. Det ingår vanligtvis i ett skript för att återanvända kod (för att undvika duplikatkod) eller distribueras som en del av en modul för att göra den användbar för andra i flera skript.

Scenarier där en funktion kan vara användbar:

  • Beräkna medelvärdet för en grupp siffror
  • Skapa en rapport för körning av processer
  • Skriv en funktion som testar att en dator är "frisk" genom att pinga på datorn och komma åt c$ -delningen

Funktioner skapas med hjälp av function , följt av ett enda ordnamn och ett skriptblock som innehåller koden som ska utföras när funktionsnamnet kallas.

function NameOfFunction {
    Your code
}

demo

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

Användande:

> HelloWorld
Greetings from PowerShell!

Manus

Ett skript är en textfil med filändelsen .ps1 som innehåller PowerShell-kommandon som kommer att köras när skriptet anropas. Eftersom skript är sparade filer är de enkla att överföra mellan datorer.

Skript skrivs ofta för att lösa ett specifikt problem, t.ex.

  • Kör en underhållsuppgift varje vecka
  • För att installera och konfigurera en lösning / applikation på en dator

demo

MyFirstScript.ps1:

Write-Host "Hello World!"
2+2

Du kan köra ett skript genom att ange sökvägen till filen med ett:

  • Absolut väg, ex. c:\MyFirstScript.ps1
  • Relativ sökväg, ex .\MyFirstScript.ps1 om den aktuella katalogen för din PowerShell-konsol var C:\

Användande:

> .\MyFirstScript.ps1
Hello World!
4

Ett skript kan också importera moduler, definiera egna funktioner etc.

MySecondScript.ps1:

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

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

Användande:

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

Modul

En modul är en samling relaterade återanvändbara funktioner (eller cmdlets) som enkelt kan distribueras till andra PowerShell-användare och användas i flera skript eller direkt i konsolen. En modul sparas vanligtvis i sin egen katalog och består av:

  • En eller flera .psm1 filtillägget .psm1 innehåller funktioner eller binära enheter ( .dll ) som innehåller cmdlets
  • Ett .psd1 beskriver .psd1 namn, version, författare, beskrivning, vilka funktioner / cmdlets den tillhandahåller etc.
  • Andra krav för att den ska fungera inkl. beroenden, skript etc.

Exempel på moduler:

  • En modul som innehåller funktioner / cmdleter som utför statistik över en datasats
  • En modul för frågning och konfigurering av databaser

För att göra det enkelt för PowerShell att hitta och importera en modul placeras den ofta på en av de kända PowerShell-modulplatserna definierade i $env:PSModulePath .

demo

Lista moduler som är installerade på en av de kända modulplatserna:

Get-Module -ListAvailable

Importera en modul, t.ex. Hyper-V modul:

Import-Module Hyper-V

Lista tillgängliga kommandon i en modul, t.ex. Microsoft.PowerShell.Archive modulen

> 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

Avancerade funktioner

Avancerade funktioner fungerar på samma sätt som cmdlets. PowerShell ISE innehåller två skelett med avancerade funktioner. Få åtkomst till dessa via menyn, redigera, kodavsnitt eller med Ctrl + J. (Från och med PS 3.0 kan senare versioner skilja sig åt)

Viktiga saker som avancerade funktioner inkluderar är,

  • inbyggd, anpassad hjälp för funktionen, tillgänglig via Get-Help
  • kan använda [CmdletBinding ()] som gör att funktionen fungerar som en cmdlet
  • omfattande parameteralternativ

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

Komplett 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow