Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kort beskrivning
Förhindrar att ett skript körs utan nödvändiga element.
Lång beskrivning
Instruktionen #Requires
förhindrar att ett skript körs om inte kraven för PowerShell-versionen, modulerna (och versionen) och utgåvan uppfylls. Om kraven inte uppfylls kör PowerShell inte skriptet eller tillhandahåller andra körningsfunktioner, till exempel tabbar.
Syntax
#Requires -Version <N>[.<n>]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -RunAsAdministrator
Mer information om syntaxen finns i ScriptRequirements.
Regler för användning
Ett skript kan innehålla mer än en #Requires
instruktion. - #Requires
instruktionerna kan visas på valfri rad i ett skript.
Om du placerar en #Requires
instruktion i en funktion begränsas inte dess omfång. Alla #Requires
instruktioner tillämpas alltid globalt och måste uppfyllas innan skriptet kan köras.
Varning
Även om en #Requires
-instruktion kan visas på valfri rad i ett skript, påverkar dess position i ett skript inte sekvensen för programmet. Det globala tillstånd som -instruktionen #Requires
presenterar måste uppfyllas innan skriptkörningen.
Exempel:
Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore
Du kanske tror att koden ovan inte ska köras eftersom den nödvändiga modulen togs bort före -instruktionen #Requires
. Tillståndet måste dock #Requires
uppfyllas innan skriptet ens kunde köras. Sedan ogiltigförklarade den första raden i skriptet det nödvändiga tillståndet.
Parametrar
-Sammansättningssökväg <> | <. NET-sammansättningsspecifikation>
Viktigt!
Syntaxen -Assembly
är inaktuell. Den fungerar inte som den ska. Syntaxen lades till i PowerShell 5.1 men stödkoden implementerades aldrig. Syntaxen accepteras fortfarande för bakåtkompatibilitet.
Anger sökvägen till sammansättnings-DLL-filen eller ett .NET-sammansättningsnamn. Sammansättningsparametern introducerades i PowerShell 5.0. Mer information om .NET-sammansättningar finns i Sammansättningsnamn.
Till exempel:
#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-Version <N>[.<n>]
Anger den lägsta version av PowerShell som skriptet kräver. Ange ett huvudversionsnummer och valfritt delversionsnummer.
Till exempel:
#Requires -Version 6.0
-Modules <Module-Name> | <Hashtable>
Anger PowerShell-moduler som skriptet kräver. Ange modulnamnet och ett valfritt versionsnummer.
Om de moduler som krävs inte finns i den aktuella sessionen importerar PowerShell dem. Om modulerna inte kan importeras utlöser PowerShell ett avslutande fel.
Instruktionen #Requires
läser inte in klass- och uppräkningsdefinitioner i modulen. Använd -instruktionen using module
i början av skriptet för att importera modulen, inklusive klass- och uppräkningsdefinitionerna. Mer information finns i about_Using.
För varje modul skriver du modulnamnet (<Sträng>) eller en hashtable. Värdet kan vara en kombination av strängar och hashtables. Hashtabellen har följande nycklar.
-
ModuleName
- Obligatoriskt Anger modulnamnet. -
GUID
- Valfritt Anger GUID för modulen. - Det är också Obligatoriskt att ange minst en av de tre nycklarna nedan.
-
ModuleVersion
– Anger en lägsta godtagbar version av modulen. -
MaximumVersion
– Anger den maximala godkända versionen av modulen. -
RequiredVersion
– Anger en exakt, nödvändig version av modulen. Detta kan inte användas med de andra versionsnycklarna.
-
Kommentar
RequiredVersion
lades till i Windows PowerShell 5.0.
MaximumVersion
lades till i Windows PowerShell 5.1.
Till exempel:
Kräv att AzureRM.Netcore
(version 0.12.0
eller senare) är installerat.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }
Kräv att AzureRM.Netcore
(endast version 0.12.0
) är installerat.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }
Kräver att AzureRM.Netcore
(version 0.12.0
eller mindre) är installerad.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }
Kräv att alla versioner av AzureRM.Netcore
och PowerShellGet
är installerade.
#Requires -Modules AzureRM.Netcore, PowerShellGet
När du använder RequiredVersion
nyckeln kontrollerar du att versionssträngen exakt matchar den versionssträng du behöver.
Get-Module AzureRM.Netcore -ListAvailable
Directory: /home/azureuser/.local/share/powershell/Modules
ModuleType Version Name PSEdition ExportedCommands
---------- ------- ---- --------- ----------------
Script 0.12.0 AzureRM.Netcore Core
Följande exempel misslyckas eftersom 0.12 inte exakt matchar 0.12.0.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }
-PSEdition <PSEdition-Name>
Anger en PowerShell-utgåva som skriptet kräver. Giltiga värden är Core för PowerShell och Desktop för Windows PowerShell.
Till exempel:
#Requires -PSEdition Core
-RunAsAdministrator
När den här växelparametern läggs till i instruktionen #Requires
anger den att PowerShell-sessionen där du kör skriptet måste startas med utökade användarrättigheter. Parametern RunAsAdministrator ignoreras i ett operativsystem som inte är Windows. Parametern RunAsAdministrator introducerades i PowerShell 4.0.
Till exempel:
#Requires -RunAsAdministrator
Exempel
Följande skript har två #Requires
instruktioner. Om kraven som anges i båda uttrycken inte uppfylls körs inte skriptet. Varje #Requires
instruktion måste vara det första objektet på en rad:
#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
param
(
[Parameter(Mandatory=$true)]
[string[]]
$Path
)
...