Kommentar
Å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
#Requires-instruktionen förhindrar att ett skript körs om inte kraven för PowerShell-version, moduler (och version) och version 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. De #Requires-uttrycken 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 #Requires-instruktionen 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 #Requires-instruktionen. Men #Requires tillstånd måste 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>
Viktig
Syntaxen för -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. Parametern Assembly 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
-Moduler <Modulnamn> | <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 using module-instruktionen 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 (<String>) eller en hashtable. Värdet kan vara en kombination av strängar och hashtables. Hashtabellen har följande nycklar.
-
ModuleName- Obligatoriskt Anger modulnamnet. -
GUID- Valfri Anger GUID för modulen. - Det är också Krävs för 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.
-
Not
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) har installerats.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }
Kräver att AzureRM.Netcore (version 0.12.0 eller mindre) är installerat.
#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 nyckel 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 din #Requires-instruktion 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
)
...