about_Requires

Descrizione breve

Impedisce l'esecuzione di uno script senza gli elementi necessari.

Descrizione lunga

L'istruzione impedisce l'esecuzione #Requires di uno script a meno che non vengano soddisfatti i prerequisiti di PowerShell, moduli e versione. Se i prerequisiti non sono soddisfatti, PowerShell non esegue lo script o fornisce altre funzionalità di runtime, ad esempio il completamento tramite tabulazione.

Sintassi

#Requires -Version <N>[.<n>]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -RunAsAdministrator

Per altre informazioni sulla sintassi, vedere ScriptRequirements.

Regole per l'uso

Uno script può includere più istruzioni #Requires . Le #Requires istruzioni possono essere visualizzate in qualsiasi riga di uno script.

L'inserimento di un'istruzione #Requires all'interno di una funzione non limita l'ambito. Tutte le #Requires istruzioni vengono sempre applicate a livello globale e devono essere soddisfatte prima che lo script possa essere eseguito.

Avviso

Anche se un'istruzione #Requires può essere visualizzata in qualsiasi riga di uno script, la relativa posizione in uno script non influisce sulla sequenza dell'applicazione. Lo stato globale presentato dall'istruzione #Requires deve essere soddisfatto prima dell'esecuzione dello script.

Esempio:

Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore

Si potrebbe pensare che il codice precedente non debba essere eseguito perché il modulo richiesto è stato rimosso prima dell'istruzione #Requires . Tuttavia, lo #Requires stato doveva essere soddisfatto prima che lo script potesse anche essere eseguito. Quindi la prima riga dello script ha invalidato lo stato richiesto.

Parametri

-Assembly <Path> | <. Specifica dell'assembly NET>

Importante

La -Assembly sintassi è deprecata. Non serve alcuna funzione. La sintassi è stata aggiunta in PowerShell 5.1, ma il codice di supporto non è mai stato implementato. La sintassi è ancora accettata per la compatibilità con le versioni precedenti.

Specifica il percorso del file DLL dell'assembly o di un nome di assembly .NET. Il parametro Assembly è stato introdotto in PowerShell 5.0. Per altre informazioni sugli assembly .NET, vedere Nomi di assembly.

Ad esempio:

#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
  Culture=neutral, PublicKeyToken=31bf3856ad364e35"

-Version <N>[.<n>]

Specifica la versione minima di PowerShell richiesta dallo script. Immettere un numero di versione principale e un numero di versione secondaria facoltativo.

Ad esempio:

#Requires -Version 6.0

-Modules <Module-Name> | <Hashtable>

Specifica i moduli di PowerShell richiesti dallo script. Immettere il nome del modulo e un numero di versione facoltativo.

Se i moduli necessari non si trovano nella sessione corrente, PowerShell li importa. Se i moduli non possono essere importati, PowerShell genera un errore irreversibile.

L'istruzione #Requires non carica le definizioni di classe ed enumerazione nel modulo. Usare l'istruzione using module all'inizio dello script per importare il modulo, incluse le definizioni di classe ed enumerazione. Per altre informazioni, vedere about_Using.

Per ogni modulo, digitare il nome del modulo (<String>) o una tabella hash. Il valore può essere una combinazione di stringhe e tabelle hash. La tabella hash include le chiavi seguenti.

  • ModuleName - Obbligatorio Specifica il nome del modulo.
  • GUID - Facoltativo Specifica il GUID del modulo.
  • È anche obbligatorio specificare almeno una delle tre chiavi seguenti.
    • ModuleVersion - Specifica una versione minima accettabile del modulo.
    • MaximumVersion - Specifica la versione massima accettabile del modulo.
    • RequiredVersion - Specifica una versione esatta e obbligatoria del modulo. Non è possibile usare questa opzione con le altre chiavi di versione.

Nota

RequiredVersion è stato aggiunto in Windows PowerShell 5.0. MaximumVersion è stato aggiunto in Windows PowerShell 5.1.

Ad esempio:

Richiedere che AzureRM.Netcore (versione 0.12.0 o successiva) sia installato.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }

Richiedere che AzureRM.Netcore (solo versione 0.12.0) sia installato.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }

Richiede che AzureRM.Netcore (versione 0.12.0 o minore) sia installato.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }

Richiedere l'installazione di qualsiasi versione di AzureRM.Netcore e PowerShellGet .

#Requires -Modules AzureRM.Netcore, PowerShellGet

Quando si usa la chiave, assicurarsi che la RequiredVersion stringa di versione corrisponda esattamente alla stringa di versione necessaria.

Get-Module AzureRM.Netcore -ListAvailable
    Directory: /home/azureuser/.local/share/powershell/Modules

ModuleType Version Name            PSEdition ExportedCommands
---------- ------- ----            --------- ----------------
Script     0.12.0  AzureRM.Netcore Core

L'esempio seguente ha esito negativo perché 0.12 non corrisponde esattamente a 0.12.0.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }

-P edizione Standard dition <P edizione Standard dition-Name>

Specifica un'edizione di PowerShell richiesta dallo script. I valori validi sono Core per PowerShell e Desktop per Windows PowerShell.

Ad esempio:

#Requires -PSEdition Core

-RunAs Amministrazione istrator

Quando questo parametro switch viene aggiunto all'istruzione #Requires , specifica che la sessione di PowerShell in cui si esegue lo script deve essere avviata con diritti utente elevati. Il parametro RunAs Amministrazione istrator viene ignorato in un sistema operativo non Windows. Il parametro RunAs Amministrazione istrator è stato introdotto in PowerShell 4.0.

Ad esempio:

#Requires -RunAsAdministrator

Esempi

Lo script seguente include due #Requires istruzioni. Se i requisiti specificati in entrambe le istruzioni non vengono soddisfatti, lo script non viene eseguito. Ogni #Requires istruzione deve essere il primo elemento di una riga:

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

Vedi anche