Ricerca…


introduzione

I moduli PowerShell portano l'estendibilità all'amministratore di sistemi, DBA e sviluppatore. Che si tratti semplicemente di un metodo per condividere funzioni e script.

Le funzioni di Powershell servono per evitare codici ripetitivi. Fare riferimento a [Funzioni PS] [1] [1]: Funzioni PowerShell

Gli script di PowerShell vengono utilizzati per automatizzare le attività di amministrazione che comprendono shell della riga di comando e cmdlet associati creati su .NET Framework.

Funzione

Una funzione è un blocco di codice denominato che viene utilizzato per definire il codice riutilizzabile che dovrebbe essere facile da usare. Di solito è incluso in uno script per aiutare a riutilizzare il codice (per evitare il codice duplicato) o distribuito come parte di un modulo per renderlo utile per gli altri in più script.

Scenari in cui una funzione potrebbe essere utile:

  • Calcola la media di un gruppo di numeri
  • Genera un report per i processi in esecuzione
  • Scrivi una funzione che verifica che un computer sia "sano" eseguendo il ping del computer e accedendo a c$ -share

Le funzioni vengono create utilizzando la parola chiave function , seguita da un nome di una sola parola e da un blocco di script contenente il codice da eseguire quando viene chiamato il nome della funzione.

function NameOfFunction {
    Your code
}

dimostrazione

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

Uso:

> HelloWorld
Greetings from PowerShell!

copione

Uno script è un file di testo con l'estensione .ps1 che contiene i comandi di PowerShell che verranno eseguiti quando viene chiamato lo script. Poiché gli script sono file salvati, sono facili da trasferire tra computer.

Gli script sono spesso scritti per risolvere un problema specifico, es .:

  • Esegui un'attività di manutenzione settimanale
  • Per installare e configurare una soluzione / applicazione su un computer

dimostrazione

MyFirstScript.ps1:

Write-Host "Hello World!"
2+2

Puoi eseguire uno script inserendo il percorso del file usando un:

  • Percorso assoluto, es. c:\MyFirstScript.ps1
  • Percorso relativo, ex .\MyFirstScript.ps1 se la directory corrente della console PowerShell era C:\

Uso:

> .\MyFirstScript.ps1
Hello World!
4

Uno script può anche importare moduli, definirne le proprie funzioni, ecc.

MySecondScript.ps1:

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

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

Uso:

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

Modulo

Un modulo è una raccolta di funzioni riutilizzabili correlate (o cmdlet) che possono essere facilmente distribuite ad altri utenti PowerShell e utilizzate in più script o direttamente nella console. Un modulo viene solitamente salvato nella propria directory ed è composto da:

  • Uno o più file di codice con estensione .psm1 contenente funzioni o assembly binari ( .dll ) contenenti cmdlet
  • Un modulo manifest .psd1 descrive il nome, la versione, l'autore, la descrizione dei moduli, quali funzioni / cmdlet fornisce ecc.
  • Altri requisiti per farlo funzionare incl. dipendenze, script ecc.

Esempi di moduli:

  • Un modulo contenente funzioni / cmdlet che eseguono statistiche su un set di dati
  • Un modulo per interrogare e configurare database

Per semplificare il reperimento e l'importazione di un modulo da parte di PowerShell, questo viene spesso inserito in uno dei percorsi del modulo PowerShell noti, definiti in $env:PSModulePath .

dimostrazione

Elenca i moduli che vengono installati in una delle posizioni dei moduli conosciute:

Get-Module -ListAvailable

Importa un modulo, es. Modulo Hyper-V :

Import-Module Hyper-V

Elenca i comandi disponibili in un modulo, es. il modulo 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

Funzioni avanzate

Le funzioni avanzate si comportano allo stesso modo dei cmdlet. PowerShell ISE include due scheletri di funzioni avanzate. Accedi a questi tramite il menu, modifica, frammenti di codice o Ctrl + J. (A partire da PS 3.0, le versioni successive potrebbero differire)

Le cose chiave che includono le funzioni avanzate sono

  • Guida integrata e personalizzata per la funzione, accessibile tramite Get-Help
  • può usare [CmdletBinding ()] che fa sì che la funzione si comporti come un cmdlet
  • ampie opzioni di parametri

Versione semplice:

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

Versione completa:

<#
.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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow