【发布时间】:2020-05-31 17:51:52
【问题描述】:
我在通过 Powershell 脚本使用 RoboCopy.exe 时遇到了一些问题。函数如下...
function copyFiles{
Start-Process "RoboCopy.exe" -ArgumentList "'C:\Test' 'C:\test2' /copyall"
Write-Host 'Test'
}
“测试”输出到控制台,但副本不运行。我最初试图用变量作为目录进行复制,但我把它归结为这个,因为那不起作用。在目录“test1”中有一个 .txt 文件,“test2”存在但为空。我也试过没有那个目录。
它在另一个文件中被调用:
. .\rCopy.ps1
copyFiles
现在,我尝试使用以下代码将日志输出到文件中,但它给了我一个权限错误。 “Out-File : 访问路径 'C:\Users\Me\Desktop' 被拒绝”。我也尝试直接输出到 C:\ 但这给出了同样的错误。 Powershell 正在以管理员身份运行。
$testCopy = Start-Process "RoboCopy.exe" -ArgumentList "'C:\Test' 'C:\test2' /copyall"
$testCopy | Out-File -LiteralPath "C:\Users\Me\
要关闭,我还尝试在主脚本中运行“Start-Process 'RoboCopy.exe' -ArgumentList 'C:\test' 'C:\test2' /copyall”,而不从另一个调用该函数。
任何帮助将不胜感激。
【问题讨论】:
-
您是否在 powershell 之外测试过 robocopy 语法?目标目录是否已经存在? Out-File 需要文件名,而不是路径。确保您有权将文件复制到目的地,或者在本例中为 c:
-
顺便说一句:您使用
Start-Process可能是有意在新窗口 中异步 运行RocoCopy.exe,但更多典型情况是同步在同一窗口中执行控制台应用程序,在这种情况下您需要直接调用它们(c:\path\to\some.exe ...或@ 987654329@) - 见this answer。在新窗口中异步执行的替代方法是使用background job。
标签: powershell robocopy