about_Requires
Kort beskrivning
Förhindrar att ett skript körs utan de nödvändiga elementen.
Lång beskrivning
Instruktionen förhindrar att ett skript körs om inte #Requires PowerShell-versionen, modulerna (och versionen) eller snapin-modulerna (och versionen) och kraven för utgåvan är uppfyllda. Om förutsättningarna 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. #RequiresIsatserna kan visas på valfri rad i ett skript.
Att placera #Requires en -instruktion inuti 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 -instruktion kan visas på vilken rad som helst i ett skript, påverkar inte dess position i ett skript #Requires 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 ovanstående kod inte bör köras eftersom den nödvändiga modulen togs bort före #Requires -instruktionen. Tillståndet var #Requires dock tvungen att uppfyllas innan skriptet ens kunde köras. Den första raden i skriptet ogiltigförklarade sedan det nödvändiga tillståndet.
Parametrar
-Sammansättning <Assembly path> | <.NET assembly specification>
Viktigt
Syntaxen -Assembly är inaktuell. Den fungerar inte. Syntaxen lades till i PowerShell 5.1 men stödkoden implementerades aldrig. Syntaxen är fortfarande godkänd 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.
Ett 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 versionen av PowerShell som skriptet kräver. Ange ett huvudversionsnummer och valfritt delversionsnummer.
Ett exempel:
#Requires -Version 6.0
-PSSnapin <PSSnapin-Name> [-Version <N> [. <n> ]]
Anger en PowerShell-snapin-modulen som skriptet kräver. Ange snapin-modulens namn och ett valfritt versionsnummer.
Ett exempel:
#Requires -PSSnapin DiskSnapin -Version 1.2
-Moduler <Module-Name> | <Hashtable>
Anger De PowerShell-moduler som skriptet kräver. Ange modulnamnet och ett valfritt versionsnummer.
Om de nödvändiga modulerna inte finns i den aktuella sessionen importerar PowerShell dem. Om modulerna inte kan importeras kastar PowerShell ett avslutande fel.
För varje modul anger du modulnamnet ( <String> ) eller en hash-tabell. Värdet kan vara en kombination av strängar och hash-tabeller. Hash-tabellen har följande nycklar.
ModuleName- Krävs Anger modulnamnet.GUID- Valfritt Anger GUID för modulen.- Det är också Obligatoriskt att ange en av de tre nycklarna nedan. Dessa nycklar kan inte användas tillsammans.
ModuleVersion– Anger en minsta godtagbar version av modulen.RequiredVersion– Anger en exakt, obligatorisk version av modulen.MaximumVersion– Anger den högsta godkända versionen av modulen.
Anteckning
RequiredVersionlades till i Windows PowerShell 5.0.
MaximumVersionlades till i Windows PowerShell 5.1.
Ett exempel:
Kräv AzureRM.Netcore att (version 0.12.0 eller senare) är installerat.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }
Kräv AzureRM.Netcore att (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 AzureRM.Netcore av och PowerShellGet är installerade.
#Requires -Modules AzureRM.Netcore, PowerShellGet
När du använder RequiredVersion nyckeln ska du se till att versionssträngen exakt matchar versionssträngen som 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.
Ett exempel:
#Requires -PSEdition Core
-ShellId
Anger gränssnittet som skriptet kräver. Ange gränssnitts-ID:t. Om du använder ShellId-parametern måste du även inkludera PSSnapin-parametern.
Du hittar aktuellt ShellId genom att köra frågor mot den automatiska $ShellId variabeln.
Ett exempel:
#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core
Anteckning
Den här parametern är avsedd att användas i minigränssnitt, som har gjorts inaktuella.
-RunAsAdministrator
När den här växlingsparametern läggs till i -instruktionen anger den att PowerShell-sessionen där du kör skriptet måste startas med #Requires utökade användarrättigheter. Parametern RunAsAdministrator ignoreras på ett icke-Windows operativsystem. Parametern RunAsAdministrator introducerades i PowerShell 4.0.
Ett exempel:
#Requires -RunAsAdministrator
Exempel
Följande skript har två #Requires -instruktioner. Om de krav som anges i båda isatserna 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
)
...