Freigeben über


New-CMTSStepRunPowerShellScript

Erstellen Sie den Schritt PowerShell-Skript ausführen in einer Tasksequenz.

Syntax

New-CMTSStepRunPowerShellScript
   -Name <String>
   [-SuccessCode <Int32[]>]
   [-Condition <IResultObject[]>]
   [-ContinueOnError]
   [-Description <String>]
   [-Disable]
   [-DisableWildcardHandling]
   [-ForceWildcardHandling]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CMTSStepRunPowerShellScript
   [-ExecutionPolicy <ExecutionPolicyType>]
   -Name <String>
   [-OutputVariableName <String>]
   [-Parameter <String>]
   -SourceScript <String>
   [-SuccessCode <Int32[]>]
   [-TimeoutMins <Int32>]
   [-UserName <String>]
   [-UserPassword <SecureString>]
   [-WorkingDirectory <String>]
   [-Condition <IResultObject[]>]
   [-ContinueOnError]
   [-Description <String>]
   [-Disable]
   [-DisableWildcardHandling]
   [-ForceWildcardHandling]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-CMTSStepRunPowerShellScript
   [-ExecutionPolicy <ExecutionPolicyType>]
   -Name <String>
   [-OutputVariableName <String>]
   -PackageId <String>
   [-Parameter <String>]
   -ScriptName <String>
   [-SuccessCode <Int32[]>]
   [-TimeoutMins <Int32>]
   [-UserName <String>]
   [-UserPassword <SecureString>]
   [-WorkingDirectory <String>]
   [-Condition <IResultObject[]>]
   [-ContinueOnError]
   [-Description <String>]
   [-Disable]
   [-DisableWildcardHandling]
   [-ForceWildcardHandling]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Beschreibung

Dieses Cmdlet erstellt ein neues Schrittobjekt "PowerShell-Skript ausführen ". Verwenden Sie dann das Cmdlet Add-CMTaskSequenceStep , um den Schritt einer Tasksequenz hinzuzufügen. Weitere Informationen zu diesem Schritt finden Sie unter Informationen zu Tasksequenzschritten: Ausführen von PowerShell-Skripts.

Hinweis

Führen Sie Configuration Manager-Cmdlets auf dem Configuration Manager-Standortlaufwerk aus, z. B PS XYZ:\>. . Weitere Informationen finden Sie unter Erste Schritte.

Beispiele

Beispiel 1

In diesem Beispiel wird zunächst ein -Objekt für den Schritt PowerShell-Skript ausführen erstellt. Es gibt das Paket mit dem Namen des auszuführenden Skripts an. Es legt die PowerShell-Ausführungsrichtlinie auf die sicherste AllSigned-Ebene fest, die erfordert, dass das Skript digital signiert ist.

Anschließend ruft sie ein Tasksequenzobjekt ab und fügt diesen neuen Schritt der Tasksequenz am Index 11 hinzu.

$step = New-CMTSStepRunPowerShellScript -Name "Run PowerShell Script" -PackageId "XYZ00821" -ScriptName "Add-ContosoBranding.ps1" -ExecutionPolicy AllSigned 

$tsNameOsd = "Default OS deployment"
$tsOsd = Get-CMTaskSequence -Name $tsNameOsd -Fast

$tsOsd | Add-CMTaskSequenceStep -Step $step -InsertStepStartIndex 11

Parameter

-Condition

Geben Sie ein Bedingungsobjekt an, das mit diesem Schritt verwendet werden soll. Verwenden Sie zum Abrufen dieses Objekts eines der Tasksequenzbedingungs-Cmdlets. Beispiel: Get-CMTSStepConditionVariable.

Typ:IResultObject[]
Aliase:Conditions
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Confirm

Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ContinueOnError

Fügen Sie diesen Parameter hinzu, um die Schrittoption Bei Fehler fortsetzen zu aktivieren. Wenn Sie diese Option aktivieren und der Schritt fehlschlägt, wird die Tasksequenz fortgesetzt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Description

Geben Sie eine optionale Beschreibung für diesen Tasksequenzschritt an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Disable

Fügen Sie diesen Parameter hinzu, um diesen Tasksequenzschritt zu deaktivieren.

Typ:SwitchParameter
Aliase:DisableThisStep
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-DisableWildcardHandling

Dieser Parameter behandelt Wildcardzeichen als Literalzeichenwerte. Sie können es nicht mit ForceWildcardHandling kombinieren.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ExecutionPolicy

Geben Sie die PowerShell-Ausführungsrichtlinie für die Skripts an, die Sie auf dem Computer ausführen lassen. Wählen Sie eine der folgenden Richtlinien aus:

  • AllSigned: Führen Sie nur Skripts aus, die von einem vertrauenswürdigen Herausgeber signiert wurden.

  • Undefined: Definieren Sie keine Ausführungsrichtlinie.

  • Bypass: Laden Sie alle Konfigurationsdateien, und führen Sie alle Skripts aus. Wenn Sie ein nicht signiertes Skript aus dem Internet herunterladen, fordert PowerShell vor dem Ausführen des Skripts nicht zur Berechtigung auf.

Typ:ExecutionPolicyType
Aliase:PowerShellExecutionPolicy
Zulässige Werte:AllSigned, Undefined, Bypass
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ForceWildcardHandling

Dieser Parameter verarbeitet Wildcardzeichen und kann zu unerwartetem Verhalten führen (nicht empfohlen). Sie können es nicht mit DisableWildcardHandling kombinieren.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Name

Geben Sie einen Namen für diesen Schritt an, um ihn in der Tasksequenz zu identifizieren.

Typ:String
Aliase:StepName
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-OutputVariableName

Geben Sie den Namen einer benutzerdefinierten Tasksequenzvariable an. Wenn Sie diesen Parameter verwenden, speichert der Schritt die letzten 1000 Zeichen der Befehlsausgabe in der Variablen.

Typ:String
Aliase:Output, OutputVariable
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-PackageId

Geben Sie die Paket-ID für das Paket an, das über das PowerShell-Skript verfügt. Das Paket erfordert kein Programm. Ein Paket kann mehrere Skripts enthalten.

Dieser Wert ist eine Standardpaket-ID, z. B XYZ00821. .

Verwenden Sie dann den ScriptName-Parameter , um den Namen des Skripts anzugeben.

Typ:String
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Parameter

Geben Sie die Parameter an, die an das PowerShell-Skript übergeben werden. Diese Parameter sind identisch mit den PowerShell-Skriptparametern in der Befehlszeile. Geben Sie parameter an, die vom Skript verwendet werden, nicht für die PowerShell-Befehlszeile.

Das folgende Beispiel enthält gültige Parameter:

-MyParameter1 MyValue1 -MyParameter2 MyValue2

Das folgende Beispiel enthält ungültige Parameter. Die ersten beiden Elemente sind PowerShell-Befehlszeilenparameter (NoLogo und ExecutionPolicy). Das Skript verwendet diese Parameter nicht.

-NoLogo -ExecutionPolicy Unrestricted -File MyScript.ps1 -MyParameter1 MyValue1 -MyParameter2 MyValue2

Wenn ein Parameterwert ein Sonderzeichen oder ein Leerzeichen enthält, verwenden Sie einfache Anführungszeichen (') um den Wert. Die Verwendung doppelter Anführungszeichen (") kann dazu führen, dass der Tasksequenzschritt den Parameter falsch verarbeitet.

Beispiel: -Arg1 '%TSVar1%' -Arg2 '%TSVar2%'

Sie können diesen Parameter auch auf eine Tasksequenzvariable festlegen. Wenn Sie beispielsweise angeben %MyScriptVariable%, wenn die Tasksequenz das Skript ausführt, wird der Wert dieser benutzerdefinierten Variablen zur PowerShell-Befehlszeile hinzugefügt.

Typ:String
Aliase:Parameters
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ScriptName

Geben Sie den Namen des auszuführenden Skripts an. Dieses Skript befindet sich im Paket, das durch den PackageId-Parameter angegeben wird.

Typ:String
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-SourceScript

Verwenden Sie diesen Parameter, um die Skriptbefehle direkt anzugeben, anstatt die Parameter PackageId und ScriptName zu verwenden. Dieser Zeichenfolgenwert ist die PowerShell-Befehle, die in diesem Schritt ausgeführt werden.

Sie können den Inhalt einer vorhandenen Skriptdatei in eine Zeichenfolgenvariable lesen und diese Variable dann für diesen Parameter verwenden. Zum Beispiel:

$script = [IO.File]::ReadAllText( "C:\temp\script.ps1" )

Typ:String
Aliase:SourceCode
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-SuccessCode

Geben Sie ein Array ganzzahliger Werte als Exitcodes aus dem Skript an, die der Schritt als erfolgreich bewerten soll.

Typ:Int32[]
Aliase:SuccessCodes
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-TimeoutMins

Geben Sie einen ganzzahligen Wert an, der angibt, wie lange Configuration Manager die Ausführung des Skripts zulässt. Dieser Wert kann zwischen 1 Minuten und Minuten angegeben 999 werden. Der Standardwert ist 15 Minuten.

Wenn Sie einen Wert eingeben, der nicht genügend Zeit für den erfolgreichen Abschluss des angegebenen Skripts zulässt, schlägt dieser Schritt fehl. Die gesamte Tasksequenz kann je nach Schritt- oder Gruppenbedingungen fehlschlagen. Wenn das Timeout abläuft, beendet Configuration Manager den PowerShell-Prozess.

Typ:Int32
Aliase:TimeoutInMinutes
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-UserName

Verwenden Sie diesen Parameter, um das Skript als Windows-Benutzerkonto und nicht als lokales Systemkonto auszuführen. Geben Sie den Namen des Windows-Benutzerkontos an. Verwenden Sie den Parameter UserPassword , um das Kontokennwort anzugeben.

Typ:String
Aliase:User
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-UserPassword

Verwenden Sie diesen Parameter, um das Kennwort des Kontos anzugeben, das Sie mit UserName angeben.

Typ:SecureString
Aliase:Password
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was passieren würde, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WorkingDirectory

Geben Sie den Ordner an, in dem der Befehl gestartet wird. Dieser Pfad kann bis zu 127 Zeichen umfassen.

Typ:String
Aliase:StartIn
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Ausgaben

IResultObject

Hinweise

Weitere Informationen zu diesem Rückgabeobjekt und seinen Eigenschaften finden Sie unter SMS_TaskSequence_RunPowerShellScriptAction WMI-Serverklasse.