多年來,我使用了cmd/DOS/Windows
shell,並將命令行參數傳遞給批處理文件。例如,我有一個文件,zuzu.bat
並在其中,我訪問%1
,%2
等。現在,我想要執行相同的操作時,我會調用PowerShell
腳本when I am in a Cmd.exe shell
。我有一個腳本,xuxu.ps1
(我已經將PS1添加到我的PATHEXT變量以及與PowerShell關聯的PS1文件)。但無論我做什麼,我似乎都無法從$args
變量中獲得任何東西。它總是有長度0.如何將命令行參數傳遞給PowerShell ps1文件
如果我在PowerShell
殼,而不是cmd.exe
,它的工作(當然)。但是我還不夠舒適,因此無法全時在PowerShell環境中工作。我不想輸入powershell.exe -command xuxu.ps1 p1 p2 p3 p4
。我想輸入xuxu p1 p2 p3 p4
。
這是可能的,如果是這樣,如何?
我不能去工作的樣品是微不足道的,foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
結果總是這樣:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
我覺得關鍵是在你的第6步,你在參數傳遞的PowerShell 。可執行程序。 Daniel說他已經將PS1文件與PowerShell相關聯,但是沒有額外的%1%*規格就不會傳遞參數。另請注意,-File參數在V1中不可用。這對V2來說是新的。 – 2009-08-18 16:25:00
關於-file參數的好消息我已經忘記了。 – EBGreen 2009-08-18 16:33:49
我必須安裝V2才能嘗試您的建議。謝謝。當你說這是一個基本的安全功能時,你說的「這個」是什麼意思?從Cmd.exe調用PowerShell腳本,就像它是.com/.bat/.exe文件一樣?將參數傳遞給腳本? – 2009-08-19 03:32:28