Seit Jahren verwende ich die cmd/DOS/Windows
Shell und übergebe Befehlszeilenargumente an Batchdateien. Zum Beispiel habe ich eine Datei, zuzu.bat
und in ihm, ich Zugang %1
, %2
usw. Nun mag ich das gleiche tun , wenn ich einen Anruf PowerShell
Skript 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 $args
Variablen zu bekommen . Es hat immer die Länge 0.
Wenn ich in einer PowerShell
Shell 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
").