PowerShell使用Remove-Item删除目录提示被占用 此前正常运行原因咨询
问题描述
- 需要删除路径为
C:\Public\Folder的文件夹,该文件夹内含7个脚本文件 - 现有
CopyFiles.ps1脚本逻辑:先将其中4个脚本复制到指定存储位置,复制完成后删除原文件夹及剩余文件 - 该脚本此前运行正常,近期执行时出现目录被占用无法删除的报错
脚本内容
[string] $Path = ""; [string] $Destination = ""; # Copy the Folder [string] $Destination = "C:\ProgramData\Path\To\Folder"; [string] $Path = "C:\Public\Folder"; Copy-Item -Path $Path -Destination $Destination #Copy Files [string[]] $Files = ("CreateUser.ps1", "RemoveFiles.ps1", "RemoveUser.ps1", "UpdateUser.ps1"); foreach($file in $Files) { $Script = $Path + "\" + $file write-host $Script Copy-Item -Path $Script -Destination $Destination } [string] $Path = "C:\Public"; Remove-Item -Path $Path -Include *UserManager* -Recurse -Force
报错信息
Remove-Item : Cannot remove the item at 'C:\Public' because it is in use.
At C:\Public\Folder\CopyFiles.ps1:24 char:1
此前可正常运行、现在报错的常见原因
- 脚本运行位置变更:你当前运行的
CopyFiles.ps1本身就存放在C:\Public\Folder路径下,脚本运行时PowerShell会锁定正在执行的脚本文件及所在目录,自然无法删除。如果此前你是将CopyFiles.ps1放到其他路径下执行,就不会触发自身占用的问题。 - 当前工作目录变更:若执行脚本时PowerShell的当前工作目录为
C:\Public或其下级子目录,该目录会被PowerShell进程锁定,无法删除。此前运行时如果工作目录在其他路径,就不会出现该问题。 - 新增目录占用进程:近期可能有新增进程对
C:\Public路径进行访问锁定,常见的包括:- 杀毒软件新增了对公共目录的实时扫描规则,扫描时锁定了目标目录
- 文件资源管理器打开了
C:\Public或其下级目录,资源管理器会对当前打开的目录加锁 - 其他后台脚本/程序新增了对该路径的定时访问、备份逻辑
- 系统规则变更:Windows更新或PowerShell版本升级后,对文件/目录的锁定逻辑更严格,此前允许删除正在运行脚本所在目录的情况不再被允许。
内容的提问来源于stack exchange,提问作者Subscaper
相关产品推荐
相关产品推荐

