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> | <Tabella hash>
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" }
-PSEdition <PSEdition-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
-RunAsAdministrator
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 RunAsAdministrator viene ignorato in un sistema operativo non Windows. Il parametro RunAsAdministrator è 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
)
...