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
Instruktionen #Requires förhindrar att ett skript körs om inte PowerShell-versionen, modulerna (och versionen) eller snapin-modulerna (och versionen) och utgåvan är uppfyllda. Om kraven inte uppfylls kör PowerShell inte skriptet.
Syntax
#Requires -Version <N>[.<n>]
#Requires -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -ShellId <ShellId> -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#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.
Att placera en #Requires instruktion i en funktion begränsar 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 sats kan visas på vilken rad som helst i ett skript, påverkar dess position i ett skript inte sekvensen för dess tillämpning. 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.
Parameterar
-Sammansättningssökväg <> | <.NET-sammansättningsspecifikation>
Viktigt!
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
-PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
Anger en PowerShell-snapin-modul som skriptet kräver. Ange snapin-modulnamnet och ett valfritt versionsnummer.
Till exempel:
#Requires -PSSnapin DiskSnapin -Version 1.2
-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.
För varje modul anger du modulnamnet (<strängen>) eller en hash-tabell. Värdet kan vara en kombination av strängar och hash-tabeller. Hash-tabellen har följande nycklar.
-
ModuleName- Obligatoriskt Anger modulnamnet. -
GUID- Valfri Anger GUID för modulen. - Det är också obligatoriskt att ange en av de tre tangenterna nedan. Dessa nycklar kan inte användas tillsammans.
-
ModuleVersion– Anger en lägsta godtagbar version av modulen. -
RequiredVersion– Anger en exakt, nödvändig version av modulen. -
MaximumVersion– Anger den maximala godkända versionen av modulen.
-
Anmärkning
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-Namn>
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
-ShellId
Anger det gränssnitt som skriptet kräver. Ange gränssnittets ID. Om du använder ShellId-parametern måste du även inkludera parametern PSSnapin .
Du hittar aktuellt ShellId genom att fråga den $ShellId automatiska variabeln.
Till exempel:
#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core
Anmärkning
Den här parametern är avsedd att användas i mini-shells, som har föråldrats.
-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
)
...