Seit Jahren verwende ich die cmd/DOS/WindowsShell und übergebe Befehlszeilenargumente an Batchdateien. Zum Beispiel habe ich eine Datei, zuzu.batund in ihm, ich Zugang %1, %2usw. Nun mag ich das gleiche tun , wenn ich einen Anruf PowerShellSkript when I am in a Cmd.exe shell. Ich habe ein Skript xuxu.ps1(und ich habe meiner PATHEXT-Variablen und den mit PowerShell verknüpften PS1-Dateien PS1 hinzugefügt). Aber egal was ich mache, ich scheine nichts von der $argsVariablen zu bekommen . Es hat immer die Länge 0.
Wenn ich in einer PowerShellShell bin cmd.exe, funktioniert es (natürlich). Aber ich bin noch nicht bequem genug, um ganztägig in der PowerShell-Umgebung zu leben. Ich möchte nicht tippen powershell.exe -command xuxu.ps1 p1 p2 p3 p4. Ich möchte tippen xuxu p1 p2 p3 p4.
Ist das möglich und wenn ja, wie?
Das Beispiel, das ich nicht zur Arbeit bringen kann, ist trivial, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Die Ergebnisse sind immer so:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4").