2012-07-02 45 views
2

我正在嘗試編寫一個簡單的代碼行,它將從各種服務器的C盤中刪除各種用戶文件。如何與PowerShell連接以獲得通往服務器的路徑?PowerShell concatenation

舉例來說,這就是我想要做的,但PowerShell是不承認的+符號作爲串聯,我認爲:

remove-item "\\$server" + '\C$\Documents and Settings\a409126' -force -recurse -whatif 

我得到一個錯誤說:

Remove-Item : A positional parameter cannot be found that accepts argument '+'. 

回答

6

試試這個:

remove-item ("\\$server" + '\C$\Documents and Settings\a409126') -force -recurse -whatif

您需要了解更多關於command mode vs. expression mode在豪華

+0

它的工作原理!非常感謝!那麼只是簡單的括號導致了這個問題?奇怪,但很高興知道未來。 – Valrok

+0

PoSH中有兩種模式需要了解。請參閱原始答案中的鏈接。 – Akim

+0

嗯,現在它是有道理的,爲什麼我上面寫的代碼與我的代碼的其他部分正常工作,我將它分配給一個變量,而不是做我在這裏做的事情。 – Valrok

2

一種方法是有效的方法是使用變量擴展:

Remove-Item "\\$server\C$\Documents and Settings\a409126" -Force ... 

另一種方式是與Join-Path的cmdlet:

Join-Path -Path \\$server -ChildPath 'C$\Documents and Settings\a409126' 
+0

除非您使用單引號,否則c $將會在第一個示例中導致問題;) – x0n

+1

顯然它不會。用雙引號「$」沒有擴展,因爲後面沒有字符。 –

0

你想刪除的項目你應該加入的路徑如下:

Join-Path "\\$server" "C$\Documents and Settings\a409126" |Remove-Item -Force -Recurse -Whatif 
+0

這已經在另一個答案中說過了 –