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
)
...