You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell执行Move-Item移动用户目录报路径不存在但实际成功如何解决

问题原因

你的脚本报错根源是变量调用逻辑错误:

  • 提前将$HomeDirectory赋值为整个CSV文件所有HomeDirectory字段组成的数组,而非循环内当前行的对应路径
  • 每次执行ForEach循环时,Move-Item都会一次性传入所有用户的主目录路径,第一个路径的目录被移动走后,后续循环再查找该路径自然会提示不存在,但所有移动操作在第一次循环时就已经全部执行完成,所以你会看到功能正常但有报错的情况。
修复方案

调整循环内的变量调用逻辑,每次取当前循环行的HomeDirectory字段即可,还可新增路径存在判断避免无效路径报错,修改后的代码如下:

# 声明存储离校用户主目录列表的CSV文件路径
$HomeDirectoryList = Import-CSV "C:\Scripts\Leavers\HomeDirectoryExport.csv"
$Archive = "\\myfileserver.ac.uk\D$\21-22 Leavers"

ForEach ($userItem in $HomeDirectoryList)
{
    # 取当前循环行的主目录路径
    $currentHomeDir = $userItem.HomeDirectory
    if (Test-Path -Path $currentHomeDir) {
        Move-Item -Path $currentHomeDir -Destination $Archive
    }
}
临时隐藏错误的方法

如果不需要修复逻辑,仅想屏蔽报错,可以在Move-Item命令后添加错误忽略参数:

Move-Item -Path $HomeDirectory -Destination $Archive -ErrorAction SilentlyContinue

该方案仅做报错屏蔽,没有解决根本逻辑问题,更推荐使用上面的修复方案。

内容的提问来源于stack exchange,提问作者Daniel De La Warr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:18:04