Yıllardır cmd/DOS/Windowskabuğu kullandım ve dosyaları toplu işlemek için komut satırı argümanlarını geçtim . Örneğin, bir dosya var, zuzu.batve içinde, ben erişim %1, %2vb Şimdi, ben bir çağırdığınızda aynı şeyi istiyoruz PowerShellsenaryoyu when I am in a Cmd.exe shell. Bir komut xuxu.ps1dosyam var (ve PATHEXT değişkenime ve PowerShell ile ilişkili PS1 dosyalarıma PS1 ekledim). Ama ne yaparsam yapayım $argsdeğişkenden hiçbir şey alamıyorum . Her zaman uzunluğu 0'dır.
PowerShellBunun yerine bir kabuğun içindeysem cmd.exeiş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").