我有一个脚本可以将来自不同来源的大量文件复制到一个目录进行备份。错误输出的脚本的唯一步骤在路径和文件名中都有空格:\\server\Network Shares\Transfer\tu3\tu3 Code.mdb
我收到错误copy-item : Cannot find path '\\server\Network Shares\Transfer\tu3\tu3 Code.mdb' because it does not exist.
而我假设是因为路径或文件名中的空格。 PowerShell是否允许在完全限定的路径中使用空格?如果没有,我怎样才能获得该文件?
以下是相关代码(我的$Dest
被定义为脚本的全局变量):
$TU3CodeUpdatedPathname = "\\server\Network Shares\Transfer\tu3\"
$TU3CodeUpdatedFilename = "tu3 Code.mdb"
$TU3CodeUpdated = $TU3CodeUpdatedPathname + $TU3CodeUpdatedFilename
#
$Source = $TU3CodeUpdated
$Dest = $VMShareSpacePathname
#
copy-item $Source $Dest
答案 0 :(得分:6)
尝试更明确,并将参数值包装在引号中。添加-Verbose可能有助于调试。如果它抱怨该文件不存在,可能会在您的脚本在帐户下运行时仔细检查该文件是否确实可访问,如果它与您的用户帐户不同。
Copy-Item -Path "$Source" -Destination "$Dest"
答案 1 :(得分:2)
为了确保,您可能混淆了变量名称TU3 / HS3?
$TU3CodeUpdatedPathname = "\\server\Network Shares\Transfer\tu3\"
$TU3CodeUpdatedFilename = "tu3 Code.mdb"
$TU3CodeUpdated = Join-Path -Path $TU3CodeUpdatedPathname -ChildPath $TU3CodeUpdatedFilename
否则我无法看到您的代码有任何问题。 正如您所写的那样,空格在引号内很好。
我猜测脚本中正在运行的用户没有文件/共享的访问权限。 This post might help in that case.
答案 2 :(得分:0)
这对我有用,可以在其名称中复制带空格的文件夹。我使用的是powershell 4.0
$Source = "D:\test\Test cases"
$Dest = "D:\bck\Test cases"
Copy-Item -Path "$Source" "$Dest" -Recurse