我正在尝试使用 PsExec 在远程计算机上运行 Expand-Archive,解压缩到 Program Files 中的文件夹,但 Expand-Archive 不断返回错误:
Expand-Archive : A positional parameter cannot be found that accepts argument 'Files\Folder'
我认为这意味着 Expand-Archive 进入“程序文件”中的空间并认为一个参数已经完成并开始尝试解释下一个参数。
我使用了该命令的以下变体,都具有相同的结果:
使用 %programfiles% 环境变量在整个 Powershell 部分周围加双引号:
.\PsExec.exe \\computername /s cmd /c "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command expand-archive c:\temp\bc.zip -destinationpath %programfiles%\Folder"
使用 %programfiles% 环境变量在目标文件夹路径周围加上单引号:
.\PsExec.exe \\computername /s cmd /c C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command expand-archive c:\temp\bc.zip -destinationpath '%programfiles%\Folder'
使用 %programfiles% 环境变量在目标文件夹路径周围加双引号:
.\PsExec.exe \\computername /s cmd /c C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command expand-archive c:\temp\bc.zip -destinationpath "%programfiles%\Folder"
没有引号,使用 %programfiles% 环境变量:
.\PsExec.exe \\computername /s cmd /c C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command expand-archive c:\temp\bc.zip -destinationpath %programfiles%\Folder
完全键入的文件夹路径周围的双引号:
.\PsExec.exe \\computername /s cmd /c C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command expand-archive c:\temp\bc.zip -destinationpath "C:\Program Files\Folder"
我试过用 psexec 做同样的事情,但我遇到了各种各样的错误。
我个人会使用 powershell 的调用命令。这对你也有用吗?如果不是,如果您愿意,我会尝试更多地使用 psexec。
例子 :
$PATH = "输入路径"
$COMPUTERNAME = "输入计算机名"
调用命令 -ComputerName $COMPUTERNAME -ScriptBlock {
}
该脚本将在给定的计算机上运行,$env:ProgramFiles 转换为远程计算机上的变量,相当于 cmd 中的 %programfiles%。
我不会说接受的答案是不正确的,而是我认为它没有针对实际问题。
在这里没有任何问题
PSExec
,但是关于如何PowerShell
调用命令的问题。多次调用 Powershell 命令时,我们不能只传递不带引号的命令,尤其是那些需要带引号的参数的命令,例如OS 目录结构的间隔路径。所以我们必须
&
在调用命令时在命令之前应用 & 符号,并转义命令的内部引号作为参数,看起来像这样:或者
-command
只要在实际命令之前正确提供,您也可以忽略上述单行中的开关&
:)