【问题标题】:Delete user folder even with all contents, Powershell删除所有内容的用户文件夹,Powershell
【发布时间】:2014-06-15 00:27:54
【问题描述】:

我知道这种问题已经被问过很多次了,但从来没有人强调我面临的问题。

我有一个脚本,它会查看用户配置文件并将超过 X 天的配置文件标记为要删除的配置文件,然后将其删除。 Remove-Item,与 -Force 和 -Recurse 一起删除所有用户的标准 NTFS 连接点之外的所有文件夹/文件。对于这类文件夹,它会被拒绝访问。我什至尝试过首先获得用户文件夹的所有权 - 仍然会发生。 W7 上的这些文件夹如下:

C:\Users\<NAME>\My Documents
C:\Users\<NAME>\Start Menu

无论我如何制作脚本,它都无法删除顶级用户文件夹。使用相同的帐户,相同的PC - 如果我只是使用Windows资源管理器右键单击并删除,该文件夹将与子文件夹一起被删除。

为了记录,这些是我尝试过的方法:

Remove-Item (with -force -recurse)
[io.directory]::delete()
$variablename.delete()

我可以发布脚本,但它有点无关紧要,因为它的大部分工作只是这些连接点。

我想这是我的问题 - 如何从 PowerShell 中调用 Windows 资源管理器使用的相同删除命令?

提前致谢。

【问题讨论】:

    标签: powershell windows-7 scripting


    【解决方案1】:

    对我来说,这与文件夹集的读取属性有关。如果我创建一个联结,我习惯于立即更改它的图标,如资源管理器中所示。这将设置您无法使用资源管理器更改的连接的只读属性,但我可以使用 attrib 命令更改它:

    attrib -r /d /s Junk
    

    其中 Junk 是文件夹的符号链接。之后,我可以使用“rm”命令删除文件夹

    【讨论】:

      【解决方案2】:

      试试这个答案,它向您展示了如何删除符号链接,您可以将其合并到您的代码中::Delete broken link

      如果它不起作用,则发布错误。

      【讨论】:

      • 错误只是访问被拒绝,如果我使用:[io.directory]::delete() $variablename.delete() 我收到一条警告,显示目标目录不为空:(我会看看进入您的链接,看看是否有帮助,谢谢。
      • 刚刚尝试了您的建议,但它不起作用 - 复制并粘贴到空白文档中。我得到的唯一错误是“找不到 D:\Documents,因为它不存在。”我相信这是在 RM 部分。没有其他输出,也没有文件更改。这是因为脚本直接指向要删除的用户文件夹(C:\Users\Test9444),剩下的就是我的文档、我的视频、开始菜单、SendTo 等隐藏的系统文件夹。还有其他想法吗?真的很烦哈哈。
      • PowerShell 4.0 也是,没提到。
      • 将 -Force 添加到该脚本修复了它。我很愚蠢,忘记了隐藏文件夹需要它。认为它有效:D 将测试然后标记为答案。
      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 2012-11-10
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2018-01-05
      相关资源
      最近更新 更多