Es wird versucht, ein einzelnes Befehlszeilenargument an ein Powershell-Skript unter Windows 7 zu übergeben, aber das Skript scheint keine Argumente zu erkennen. Es sprengt durch die ersten Zeilen unterPowerShell-Skript erhält keine Argumente, egal was passiert
foreach($arg in $args)
{
Write-Host "Arg: $arg";
}
ohne etwas ausgibt, das ich auf der Kommandozeile verwenden und nicht aufgrund $args[0]
leer zu sein. Der Rest meines Skripts funktioniert jedoch, wenn ich stattdessen den Wert der Variablen, die ich über die Befehlszeile zuweisen möchte, fest codiere (er öffnet einfach diese Datei und tut etwas).
ich von dieser Antwort wurde inspiriert Passing a variable to a powershell script via command line speziell durch den Link in der Antwort akzeptiert und versucht, mit param
Block, aber das hat nichts auszudrucken sowie
param(
[string]$fileName
)
Write-Host "Filename: [ $fileName ]";
wenn wie script.ps1 -filename SampleFile.txt
aufgerufen
Wenn Ich kopiere einfach das erste Skript von der Verbindung in ein neues Skript:
und nennen es sein Ausgang ist nur Num Args: 0
.
Was mache ich falsch?
PS: Wenn es hier ankommt, ist die Versionsinformationen
PS Z:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
Können Sie [mcve] bereitstellen? Ich kann das beschriebene Verhalten nicht mit Ihrem Code reproduzieren. – PetSerAl
Ich habe das minimale, vollständige Beispiel zur Verfügung gestellt, und ich verstehe vollständig, dass dies funktionieren soll. Aber es funktioniert nicht für mich und der Zweck dieser Frage ist herauszufinden, warum. Da dies bei mir nicht funktioniert, kann ich Ihre Anforderung an das Beispiel nicht nachprüfbar erfüllen. – ajeh