2017-06-09 41 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