【发布时间】:2018-01-08 20:55:26
【问题描述】:
要删除我们服务器上的旧文件,我们使用 PowerShell 和 Invoke-Command 在服务器上运行远程命令:
Invoke-Command {
Param($ServerPath)
Remove-Item -Path $ServerPath -Recurse -Force -Verbose
} -Computer servername -Credential $Credential -ArgumentList $ServerPath
# The parsed credentials are from a different user than the one who opened the
# shell
命令本身按需要工作。但这只是将删除的文件写入控制台,而不是我想将其转发到变量/文件(最好存储在执行命令的客户端上)。
我尝试了以下选项但没有成功:
Invoke-Command {
Param($ServerPath)
Remove-Item -Path $ServerPath -Recurse -Force -Verbose 4>>"%ScriptPath%\log.txt"
} -Computer servername -Credential $Credential -ArgumentList $ServerPath
Invoke-Command {
Param($ServerPath)
Remove-Item -Path $ServerPath -Recurse -Force -Verbose >>"%ScriptPath%\log.txt"
} -Computer servername -Credential $Credential -ArgumentList $ServerPath
Invoke-Command {
Param($ServerPath)
Remove-Item -Path $ServerPath -Recurse -Force -Verbose
} 4>>"%ScriptPath%\log.txt" -Computer servername -Credential $Credential -ArgumentList $ServerPath
$log = Invoke-Command {
Param($ServerPath)
Remove-Item -Path $ServerPath -Recurse -Force -Verbose
} -Computer servername -Credential $Credential -ArgumentList $ServerPath
$log = Invoke-Command {
Param($ServerPath)
return (Remove-Item -Path $ServerPath -Recurse -Force -Verbose)
} -Computer servername -Credential $Credential -ArgumentList $ServerPath
一种解决方法可能是启动与服务器的远程会话并在那里执行,但我不想只为一个命令启动和取消远程会话。
有谁知道我在转发时做错了什么?
【问题讨论】:
-
尝试在客户端重定向详细输出,或在
Remove-Item命令上使用-PassThru仅返回对象本身并在客户端解析它们以获得您需要/想要的内容。 -
使用
Tee-Object将信息记录到远程服务器上的文件中,并将其传递回调用命令的本地主机?
标签: powershell logging remote-access invoke-command