【发布时间】:2017-03-22 05:17:47
【问题描述】:
使用按钮运行 PS 表单。按钮按下做一些事情然后调用一个模块。我需要使用模块将文件夹从 D:\FolderName01\MyFolderName 移动到 D:\FolderName02。
我以管理员身份登录。服务器 2012-R2
当通过按下按钮调用代码并运行自动化脚本时,代码确实不运行。
它确实在我编辑代码时运行没有问题,我突出显示它并使用“运行选择”。
这实际上是整个模块。什么都没有做。
代码:
function MoveTheFolder($VariableName){
if ( -not (Test-Path "D:\FolderName02") ) {
md "D:\FolderName02"}
cd -Path d:\
Move-Item -Path "D:\FolderName01\$VariableName" -Destination "D:\FolderName02" -Force
}
FolderName02 的创建没有问题。 $VariableName 被传递到模块中,并且根据断点分析和实际错误消息是正确的。原始路径是 DVD 驱动器(F: 上的 .iso 文件)。
给出的错误是
move-item: Access to the path '[D:\FolderName01\$VariableName]' is denied.
我可以使用 Windows 资源管理器手动移动文件夹,因此它们似乎不会与打开的应用程序绑定。
【问题讨论】:
-
如果启用 UAC,脚本是否“以管理员身份运行”?您可以将带有变量的路径写入控制台或消息框以确保其正确处理路径吗?
-
出于好奇,如果您使用
COPY而不是move-item,目录会被复制到目的地吗? -
@TessellatingHeckler 他没有从 DVD 中移出。 DVD 是 F:\ 而不是 D:\,对吧?
-
@Nate - 复制确实有效,但有 20GB 以上的数据。复制需要几分钟,而移动是即时的。 D:\ 驱动器位于 HD 上。该脚本正在从 F:\ 驱动器运行。 ssaviers - 我已经确认变量在 move-item 调用之前的断点处是正确的。变量名也在实际的错误消息中。
-
UAC 在注册表中被禁用(EnableLUA = 0)
标签: powershell move