Ricerca…


introduzione

A partire da PowerShell versione 2.0, gli sviluppatori possono creare moduli PowerShell. I moduli PowerShell racchiudono un insieme di funzionalità comuni. Ad esempio, esistono moduli PowerShell specifici del fornitore che gestiscono vari servizi cloud. Esistono anche moduli PowerShell generici che interagiscono con i servizi di social media ed eseguono attività di programmazione comuni, come la codifica Base64, lavorando con Named Pipes e altro.

I moduli possono esporre alias di comandi, funzioni, variabili, classi e altro.

Crea un modulo manifest

@{
  RootModule = 'MyCoolModule.psm1'
  ModuleVersion = '1.0'
  CompatiblePSEditions = @('Core')
  GUID = '6b42c995-67da-4139-be79-597a328056cc'
  Author = 'Bob Schmob'
  CompanyName = 'My Company'
  Copyright = '(c) 2017 Administrator. All rights reserved.'
  Description = 'It does cool stuff.'
  FunctionsToExport = @()
  CmdletsToExport = @()
  VariablesToExport = @()
  AliasesToExport = @()
  DscResourcesToExport = @()
}

Ogni buon modulo PowerShell ha un manifest di modulo. Il manifest del modulo contiene semplicemente metadati relativi a un modulo PowerShell e non definisce i contenuti effettivi del modulo.

Il file manifest è un file di script PowerShell, con estensione .psd1 , che contiene un HashTable. L'hashTable nel manifest deve contenere chiavi specifiche, in modo che PowerShell possa interpretarlo correttamente come un file del modulo PowerShell.

L'esempio precedente fornisce un elenco delle chiavi HashTable principali che compongono un manifest di modulo, ma ce ne sono molte altre. Il comando New-ModuleManifest ti aiuta a creare un nuovo scheletro manifest del modulo.

Esempio di modulo semplice

function Add {
  [CmdletBinding()]
  param (
    [int] $x
  , [int] $y
  )

  return $x + $y
}

Export-ModuleMember -Function Add

Questo è un semplice esempio di come potrebbe apparire un file del modulo di script PowerShell. Questo file si chiamerebbe MyCoolModule.psm1 e viene fatto riferimento dal file manifest (.psd1) del modulo. Noterai che il comando Export-ModuleMember ci consente di specificare quali funzioni nel modulo vogliamo "esportare" o esporre all'utente del modulo. Alcune funzioni saranno solo interne e non dovrebbero essere esposte, quindi queste saranno omesse dalla chiamata a Export-ModuleMember .

Esportare una variabile da un modulo

$FirstName = 'Bob'
Export-ModuleMember -Variable FirstName

Per esportare una variabile da un modulo, si utilizza il comando Export-ModuleMember , con il parametro -Variable . Ricorda, tuttavia, che se la variabile non viene esportata esplicitamente nel file manifest del modulo (.psd1), la variabile non sarà visibile al consumatore del modulo. Pensa al modulo manifest come un "gatekeeper". Se una funzione o una variabile non è consentita nel manifest del modulo, non sarà visibile al consumatore del modulo.

Nota: l' esportazione di una variabile è simile alla creazione di un campo in una classe pubblica. Non è consigliabile Sarebbe meglio esporre una funzione per ottenere il campo e una funzione per impostare il campo.

Strutturazione dei moduli PowerShell

Piuttosto che definire tutte le tue funzioni in un singolo file di modulo di script PowerShell .psm1 , potresti voler dividere la tua funzione in singoli file. È quindi possibile dot-source questi file dal file del modulo di script, che in sostanza li tratta come se fossero parte del file .psm1 stesso.

Considera questa struttura di directory del modulo:

\MyCoolModule
  \Functions
    Function1.ps1
    Function2.ps1
    Function3.ps1
MyCoolModule.psd1
MyCoolModule.psm1

All'interno del tuo file MyCoolModule.psm1 puoi inserire il seguente codice:

Get-ChildItem -Path $PSScriptRoot\Functions | 
  ForEach-Object -Process { . $PSItem.FullName }

Ciò farebbe dot-source i singoli file di funzione nel file del modulo .psm1 .

Posizione dei moduli

PowerShell cerca i moduli nelle directory elencate in $ Env: PSModulepath.

Un modulo chiamato foo , in una cartella chiamata foo, verrà trovato con Import-Module foo

In tale cartella, PowerShell cercherà un manifest del modulo (foo.psd1), un file del modulo (foo.psm1), una DLL (foo.dll).

Visibilità membro del modulo

Per impostazione predefinita, solo le funzioni definite in un modulo sono visibili al di fuori del modulo. In altre parole, se si definiscono variabili e alias in un modulo, non saranno disponibili se non nel codice del modulo.

Per sovrascrivere questo comportamento, è possibile utilizzare il cmdlet Export-ModuleMember . Ha parametri chiamati -Function , -Variable , e -Alias che consentono di specificare esattamente quali membri vengono esportati.

È importante notare che se si utilizza Export-ModuleMember , saranno visibili solo gli elementi specificati.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow