用于复制文件的 PowerShell 脚本遇到目录路径中包含空格的问题

用于复制文件的 PowerShell 脚本遇到目录路径中包含空格的问题

我有一个要复制到/从不同位置复制的文件列表。不幸的是,其中一个文件的子目录中有空格。并非所有文件都有子目录,也并非所有文件都有空格。我无法重命名这个目录,因为它是 VM 目录,重命名它将涉及删除并重新安装整个 VM。脚本如下所示。

$vDrive = "V:\VM - USA02xxxx\VM-USA02xxxx.vhd"
$vDriveToLoc = "G:\"

Copy-Item $vDrive $vDriveToLoc

错误消息是 Copy-Item:拒绝访问路径“V:\VM - USA02xxxx\VM-USA02xxxxx.vhd”。

我是管理员,对文件/文件夹有完全控制权,所以这不是问题。它可以正常复制其他目录中的文件。

我尝试用单引号替换双引号,但问题没有解决。我尝试用双引号在每个空格前添加反引号。但没用。

我知道当我在 powerShell 命令行上执行此操作时,它可以运行 cd V:\ 然后 cd "VM - USA02xxxx",但我无法以编程方式对一长串文件/目录执行此操作。有什么想法吗?

我看到了此链接,但我不确定它是否适用于此处: http://social.technet.microsoft.com/Forums/scriptcenter/en-US/71ec2cae-b126-4a4d-9622-169aa7c6b0ad/trying-to-copy-folderfiles-using-powershell?forum=winserverpowershell

我尝试按照一个人在这里评论的方式去做,但没有成功: https://stackoverflow.com/questions/3868342/running-an-exe-using-powershell-from-a-directory-with-spaces-in-it

答案1

这是用于启用跨拆分 UAC 令牌的映射驱动器的注册表项。我认为这就是为什么无法从管理脚本访问 V: 驱动器的原因。

New-ItemProperty -Path "registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLinkedConnections" -Value 1 -PropertyType "DWord"
#

出现此问题的原因是 UAC 将管理员组的成员视为标准用户。因此,登录脚本映射的网络共享与标准用户访问令牌共享,而不是与完整管理员访问令牌共享。

http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx

另一种答案是net use v: \\etc\etc在每次运行时在脚本中重新映射。

答案2

谢谢你们的想法!我尝试了一些方法,将自己添加到了具有完全控制权的发件人和收件人目录中,而且成功了!我不确定为什么我需要这样做,因为我属于管理员组。

相关内容