设置PowerShell目录只读属性后目录消失,如何恢复其在资源管理器中的显示?
设置PowerShell目录只读属性后目录消失,如何恢复其在资源管理器中的显示?
嘿,我懂你这糟心的情况——本来想给目录加个只读属性,结果它直接在资源管理器里“隐身”了,这其实是因为你操作属性的方式踩坑了。
问题根源
你之前用(Get-Item Nextcloud).Attributes += 'ReadOnly'这个命令是错的!Attributes是枚举类型,不是普通字符串,用+=会把属性值当成字符串拼接,导致原本的属性集合被搞乱成无效值,系统识别不了这个目录,自然就显示不出来了。而且你的目录原本就已经有ReadOnly属性了,根本不需要重复添加。
恢复步骤
别慌,通过PowerShell就能把它找回来,按下面的步骤操作:
- 先切换到目录所在的父文件夹(也就是你的Documents目录):
cd C:\Users\jaboja\Documents
- 强制获取这个“隐身”的目录对象(因为系统现在识别有问题,需要加
-Force参数):
$targetDir = Get-Item -Path .\Nextcloud -Force
- 重置它的属性为正确的组合,这里我们用枚举的按位或(
-bor)来设置,避免字符串拼接的错误:
# 先设置基础属性:目录、系统、存档、重解析点,再加上只读 $targetDir.Attributes = [IO.FileAttributes]::Directory -bor [IO.FileAttributes]::System -bor [IO.FileAttributes]::Archive -bor [IO.FileAttributes]::ReparsePoint -bor [IO.FileAttributes]::ReadOnly
- 最后保存更改:
$targetDir | Set-Item
执行完这些命令后,回到资源管理器按F5刷新一下,那个消失的目录就会重新显示出来了。
以后正确设置只读属性的方式
如果以后还要给目录加只读属性,记得用枚举的按位或操作,而不是+=:
$item = Get-Item -Path .\Nextcloud $item.Attributes = $item.Attributes -bor [IO.FileAttributes]::ReadOnly $item | Set-Item
这样就不会再出现目录消失的问题啦!
备注:内容来源于stack exchange,提问作者jaboja
相关产品推荐
相关产品推荐

