Yıllardır cmd/DOS/Windows
kabuğu kullandım ve dosyaları toplu işlemek için komut satırı argümanlarını geçtim . Örneğin, bir dosya var, zuzu.bat
ve içinde, ben erişim %1
, %2
vb Şimdi, ben bir çağırdığınızda aynı şeyi istiyoruz PowerShell
senaryoyu when I am in a Cmd.exe shell
. Bir komut xuxu.ps1
dosyam var (ve PATHEXT değişkenime ve PowerShell ile ilişkili PS1 dosyalarıma PS1 ekledim). Ama ne yaparsam yapayım $args
değişkenden hiçbir şey alamıyorum . Her zaman uzunluğu 0'dır.
PowerShell
Bunun yerine bir kabuğun içindeysem cmd.exe
işe yarıyor (elbette). Ancak henüz tam zamanlı olarak PowerShell ortamında yaşayacak kadar rahat değilim. Ben yazın istemiyorum powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Ben yazmak istediğiniz xuxu p1 p2 p3 p4
.
Bu mümkün mü ve eğer mümkünse nasıl?
Çalışamadığım örnek önemsiz, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Sonuçlar her zaman şu şekildedir:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4
").