2016-03-22 8 views
1

Ich frage nur die Community, ob sie einen Weg gefunden haben, das Skript vor der Ausführung des Skripts überprüfen zu lassen, welche Version von POSH ausgeführt wird. Derzeit ist meine Arbeit um den folgenden Code:PowerShell Versionsüberprüfung vor der Ausführung des Skripts

#region Final Checks 

    #//Check to make sure that version of PowerShell is at least 3.0 before preceding. 

    If($PSVersionTable.PSVersion.Major -le 2) { 
     Throw "This script has not been tested with version 2.0 or older of PowerShell. Please execute this script from a system that has PowerShell 3.0 or newer installed. Windows 8/Server 2012 and newer has it installed by default. Windows 7/Server 2008 R2 can be patched to have 3.0 installed." 
     } 

    #endregion Final Checks 

Ich habe dies direkt nach der Definition meiner Parameter. Aber zu meinem eigenen Wahnsinn möchte ich, dass das Skript diese Überprüfung automatisch vornimmt, bevor es in das Fleisch und die Kartoffel des Drehbuchs kommt. Ein guter Vergleich verwendet Validate [X] für einen Parameter. Wenn ein Benutzer versucht, Daten bereitzustellen, die nicht zu meinem Benutzer passen, wird vor der Ausführung des Skripts ein Fehler ausgegeben. Irgendwelche Ideen? Ich weiß, dass nichts in [CmdletBinding()] das tut. Vielen Dank!

Antwort

4

Sie können #Requires oben in Ihrem Skript verwenden, um Powershell mitzuteilen, was Ihr Skript tun muss.

In Ihrem speziellen Fall würden Sie

#Requires -Version 3 

setzen Dies wird Powershell sagen, dass mindestens Powershell-Version 3 ist erforderlich, wenn jemand versucht, das Skript mit Powershell Version 2 sie das erhalten laufen Folgende Meldung:

Das Skript 'version3.ps1' kann nicht ausgeführt werden, da es in Zeile 1 für Windows PowerShell Version 3.0 eine Anweisung "# requires" enthielt. Die vom Skript benötigte Version stimmt nicht mit der aktuell ausgeführten Version von Windows PowerShell Version 2 .0 überein. In Zeile: 1 char: 2 + & < < < < C: \ Benutzer \ Testuser \ Desktop \ version3.ps1 + CategoryInfo: ResourceUnavailable: (version3.ps1: String) [], ScriptRequiresException + FullyQualifiedErrorId:

ScriptRequiresUnmatchedPSVersion

Neben Version können Sie auch andere Dinge verlangen, die alle in about_Requires auf TechNet aufgeführt sind: https://technet.microsoft.com/en-us/library/hh847765.aspx

#Requires -Version 4 
#Requires -Module MyCmdlets 

Write-Host "If you see this, you are running Version 4 and have the MyCmdlets Module available" 
+0

HOLY BATMAN! Ich muss sagen, dass sie mit jeder Version großartige Dinge in POSH hinzufügen. Das funktioniert und danke für die tolle Antwort. Ich hatte absolut keine Ahnung von #Requires, da ich mich nicht zu sehr mit Manifesten beschäftige. Jetzt habe ich das zu meiner Toolbox hinzuzufügen. Ich wünschte ernsthaft, ich könnte noch drei weitere Male abstimmen, da Ihre Antwort Beispiele, Referenzen und eine großartige Erklärung enthielt. Viel Spaß beim Scripting! –

+0

Froh, dass ich helfen könnte :) – Bluecakes

Verwandte Themen