PowerShell中Remove-Item命令无法删除卸载残留文件夹问题求助
问题根因
- 你的脚本执行
cd命令进入了目标删除文件夹,PowerShell当前工作目录会锁定该文件夹,导致系统判定目录被占用,这是最核心的触发原因。手动删除时没有终端/程序占用该目录作为工作路径,因此可以正常删除。 - 次要可能性:调用
.\Update.exe --uninstall时没有等待卸载进程完全结束,卸载程序的残留进程仍占用目录内文件。
修复后的脚本
$targetPath = "C:\Users\$env:USERNAME\AppData\Local\my_app" $FileName = Join-Path $targetPath "app1.exe" if (Test-Path $FileName) { Write-Host "File Exists" } else { Write-Host "File Doesn't Exist" exit } # 用Start-Process调用卸载程序,加-Wait确保进程完全退出 Start-Process -FilePath (Join-Path $targetPath "Update.exe") -ArgumentList "--uninstall" -Wait -NoNewWindow # 切换工作目录到系统根目录,解除对目标文件夹的锁定 Set-Location "C:\" # 执行删除 Remove-Item -Path $targetPath -Force -Recurse
补充注意事项
- 如果你的Intune任务是用系统上下文部署的,
$env:USERNAME会取值为SYSTEM,无法匹配普通用户的目录路径,需要调整为用户上下文部署,或增加逻辑获取当前登录用户的配置文件路径。 - 若调整后仍偶发占用报错,可以在删除前增加1-2秒延迟:
Start-Sleep -Seconds 2
内容的提问来源于stack exchange,提问作者PingandPong
相关产品推荐
相关产品推荐

