0
我是PowerShell的新手,並且偶然發現了一些行爲,我無法在嘗試做相當簡單的事情時做出解釋。我在文件系統中有幾個包含路徑的變量,我想確保它們都有尾部斜槓(如果它們丟失,則添加它們)。內聯初始化數組的迭代?
# append trailing slash if not present
$engineXCopyPath, $engineXBackupPath, $enlistmentBuildTargetPath | ForEach-Object
{
Write-Host "hi" #where I would check the last character and add a \ if it weren't
}
當運行我的腳本,該代碼保持提示Process[_n_]
,直到我給它沒有輸入,在這種情況下,打印行的全部內容,而不是執行它。
據我所知,它應該迭代到三個項目餵給它,打印「嗨」每一個。我不確定爲什麼它會提示輸入任何內容(更不用說爲什麼它會停止輸入),也不知道它爲什麼要打印"Write-Host "hi" #where I would check the last character and add a \ if it weren't"
而不是僅打印"hi"
。
感謝您的幫助!
噢,夥計。我是一個「下一線支架」有點兒。謝謝。 – Benjin 2014-10-01 00:11:18
@Benjin - 爲了澄清,Foreach-Object是一個Cmdlet。您傳入的腳本塊只是一個位置參數。您無法在下一行繼續執行命令的參數。一個使用命名參數的例子:'1,2,3 | Foreach-Object -begin {$ x = 2} -Process {$ x * $ _}'。 Foreach(){}是一個關鍵字。爲此,您可以在下一行開始捲曲。 – 2014-10-01 00:53:44
我想我明白了。因此,通過在同一行上啓動開放大括號,Cmdlet知道我傳遞了一個參數,並且知道該參數將繼續,直到它碰到適當的大括號? – Benjin 2014-10-01 18:38:29