2010-01-13 69 views
8

我有接受許多長參數,像一些PowerShell腳本,必須只使用一行來調用PowerShell腳本?

myScript.ps1 -completePathToFile "C:\...\...\...\file.txt" -completePathForOutput "C:\...\...\...\output.log" -recipients ("[email protected]") -etc. 

我似乎無法使PowerShell中運行這些腳本,除非所有參數都在一行。有沒有辦法像這樣調用腳本?

myScript.ps1 
    -completePathToFile "C:\...\...\...\file.txt" 
    -completePathForOutput "C:\...\...\...\output.log" 
    -recipients (
    "[email protected]", 
    "[email protected]" 
    ) 
    -etc 

缺乏可讀性使我瘋狂,但腳本確實需要這個參數。

回答

13

PowerShell認爲該命令在該行末尾是完整的,除非它看到管道,打開paren或打開卷曲等特定字符。只要把續行符```在每行的結束,而是要確保有一些連字符後無空格:

myScript.ps1 ` 
    -completePathToFile "C:\...\...\...\file.txt" ` 
    -completePathForOutput "C:\...\...\...\output.log" ` 
    -recipients (
    "[email protected]", ` 
    "[email protected]" ` 
    ) 

如果你在PowerShell 2.0中你也可以把這些參數在哈希表和使用潑灑如:

$parms = @{ 
    CompletePathToFile = 'C:\...\...\...\file.txt' 
    CompletPathForOutput = 'C:\...\...\...\output.log' 
    Recipients   = '[email protected]','[email protected]' 
} 
myScript.ps1 @parms 
+0

我發現,逗號操作符是足以讓Powershell的繼續下一行,只要它實際上解析它作爲一個經營者,而不是在結尾的字符串參數」, ' – 2010-01-14 01:15:10

+0

謝謝。我確定還有其他角色向PowerShell表明還有更多。不確定是否有這些記錄的清單。 – 2010-01-14 01:23:51

+0

Keith,謝謝你讓我想起在Posh有一個噴濺。我讀它然後忘記。現在我發現它帶來了很多如何使用腳本/函數參數的可能性。 – stej 2010-01-14 05:14:12

相關問題