Frage

Wir versuchen, ein Array mit Variablen zu erstellen und dieses Array dann erweitert an ein Skript zu übergeben, das von Start-Job ausgeführt werden soll.Aber tatsächlich scheitert es und wir können den Grund nicht finden.Vielleicht kann jemand helfen!?

$arguments= @()
$arguments+= ("-Name", '$config.Name')
$arguments+= ("-Account", '$config.Account')
$arguments+= ("-Location", '$config.Location')

#do some nasty things with $config

Start-Job -ScriptBlock ([scriptblock]::create("& .'$ScriptPath' [string]$arguments")) -Name "Test"

Es scheitert mit

Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
    + CategoryInfo          : InvalidData: (:) [Select-AzureSubscription], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.WindowsAzure.Commands.Profile.SelectAzureSubscriptionCommand
    + PSComputerName        : localhost

Obwohl $config.name richtig eingestellt ist.

Irgendwelche Ideen?

Danke im Voraus!

War es hilfreich?

Lösung

Ich verwende diese Methode zum Weitergeben benannter Parameter:

generasacodicetagpre.

Hiermit können Sie denselben Parameter-Hash verwenden, den Sie mit dem Skript, wenn Sie es lokal ausgeführt haben, mit demselben Parameter verwenden.

Dieses Bit von Code:

generasacodicetagpre.

eingebettet in die erweiterbare Zeichenfolge erstellt den Parameter: Wertpaare für die Argumente:

generasacodicetagpre.

Andere Tipps

Das einfache Anführungszeichen ist das literale Zeichenfolgensymbol, Sie setzen das Argument "-Name" auf die Zeichenfolge $config.Name nicht Value of $config.Name.Verwenden Sie Folgendes, um den Wert zu verwenden:

$arguments= @()
$arguments+= ("-Name", $config.Name)
$arguments+= ("-Account", $config.Account)
$arguments+= ("-Location", $config.Location)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top