2017-06-09 67 views
0

我正在嘗試使用C#中的PowerShell爲遠程機器創建一個簡單的文件操作API。使用PSSession的PowerShell刪除項目

我能夠Copy-Item向和從遠程機器通過首先創建New-PSSession和使用附加參數-ToSession/-FromSession $s,其中$s是由New-PSSession產生的可變執行Copy-Item小命令。

我正在尋找一種方法來去除,添加和移動項目,但我已經停留在刪除部分。 MSDN不指定任何特定參數來代替-ToSession/-FromSession - 是否有任何其他方式使用PSSession刪除文件?我想限制連接遠程主機的「方法」到最低限度。免責聲明:我能夠在C#中創建遠程PowerShell客戶端,並遠程運行命令,但我寧願將進程的控制權保留在客戶端上,而不是主機上。

+0

所以,你不想在PSSession裏面運行命令嗎? – restless1987

+0

我完全想要使用PSSession運行Remove-Item命令,但據我所知,我將會話作爲參數傳遞 - 但我不知道該命令的參數是什麼。 以另一種方式我使用我創建一個運行空間,添加腳本,然後使用遠程主機作爲我執行腳本的控制器。我寧願將控制部分留在本地客戶端。 – Asunez

回答

2

從我的理解,這是你想要做什麼:

如果你想鍵入路徑:

Invoke-Command -Session $PSSession -Command {Remove-Item c:\windows} 

使用路徑變量,你需要利用$Using:關鍵字。這適用於PoShv3或更高版本。

$Path = 'C:\Windows' 
Invoke-Command -Session $PSSession -Command {Remove-Item $Using:Path} 

如果你需要去的經典,你可以通過-argumentlist參數變量傳遞到腳本塊。您可以通過$args數組或通過參數塊在腳本塊中選取它們。當然,scriptblock內的變量名可以與外部變量名不同。

$Path = 'C:\Windows' 
Invoke-Command -Session $PSSession -Command {Param($Path) Remove-Item $Path} -ArgumentList $path 
+0

這正是我正在尋找的 - 非常感謝你。你的第一個解決方案有效,但我必須將'Remove-Object'更改爲'Remove-Item'。這可能是Powershell的某些版本不匹配嗎? – Asunez

+0

不,我只是愚蠢的打字,有時候...... – restless1987

+1

我加了一點解釋。你可能需要它。 – restless1987