Get-ChildItem -force 报告“我的文档”文件夹和其他连接点上的“访问被拒绝”

2024-03-24

我有一个我编写的脚本来替换文件。我将参数传递给它以获取文件名以及要搜索的基本位置。工人线是:

$SubLocations = Get-ChildItem -Path $Startlocation -Recurse -include $Filename -Force  | 
                Where { $_.FullName.ToUpper().contains($Filter.ToUpper())}

我将 $Startlocation 设置为“C:\Users”,但是,当我尝试递归访问其他用户文件夹时,访问被拒绝。我是机器上的完全管理员,并且我已经尝试以管理员身份运行 powershell。我可以通过 Windows 资源管理器访问所有文件,没有任何问题。任何想法?

Get-ChildItem : Access to the path 'C:\Users\jepa227\Documents\My Music' is denied.
At C:\Users\krla226\Google Drive\Documents\PowerShell\Replace-File.ps1:35 char:46
+ $SubLocations = Get-ChildItem <<<<  -Path $Startlocation -Recurse -    include $Filename -Force | 
    + CategoryInfo          : PermissionDenied: (C:\Users\jepa227\Documents\My     Music:String) [Get-ChildItem], Una 
   uthorizedAccessException
+ FullyQualifiedErrorId :  DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

UPDATE

虽然我无法通过 GCI 让它工作,但我可以使用 WMI 来解决我的问题。对于那些感兴趣的人:

$SubLocations = Get-WmiObject -Class cim_datafile -Filter "fileName = '$filename' AND Extension = '$extension'" | 
                            Where { $_.Name.ToUpper().contains($Filter.ToUpper()) }

我能够在 Windows 7 计算机上重现此问题,使用以下命令以名为“admin”的管理员用户身份登录,以提升的权限运行 powershell,并禁用 UAC:

get-childitem "c:\users\Admin\my documents"

and

cd "c:\users\admin\my documents"
get-childitem

根据文章here http://answers.microsoft.com/en-us/windows/forum/windows_vista-security/access-denied-to-the-my-documents-and-settings/915eecc8-6a07-4d6a-8ca5-468ee51e9484?auth=1,看起来“我的文档”、“我的音乐”等被定义为与 Vista 之前的软件向后兼容的连接点。 Powershell 本身并不擅长处理连接点。这里似乎有几个选择:

1) 从 Get-ChildItem 命令中删除 -force。这可能是您最好的选择。

get-childitem c:\users -recurse

工作时不会出现错误,并且会跳过连接点和系统目录(例如 AppData)。

Editor's note: Omitting -Force does solve the immediate problem, but invariably skips all hidden items, not just the hidden junction points that cause the access-denied errors.

2)如果您绝对需要使用-Force由于某种原因,您可以以编程方式递归每个子目录,跳过连接点。本文 https://stackoverflow.com/questions/2311105/test-in-powershell-code-if-a-folder-is-a-junction-point描述了识别连接点的机制。 .ps1 脚本文件中的框架可能如下所示:

Param( [Parameter(Mandatory=$true)][string]$startLocation )

$errorActionPreference = "Stop"

function ProcessDirectory( $dir )
{
  Write-Host ("Working on " + $dir.FullName)

  # Work on the files in this folder here
  $filesToProcess = ( gci | where { ($_.PsIsContainer -eq 0) } ) # and file matches the requested pattern
  # process files

  $subdirs = gci $dir.FullName -force | where {($_.Attributes -band [IO.FileAttributes]::ReparsePoint) -eq 0 -and ($_.PsIsContainer -eq 1) -and (![string]::IsNullOrEmpty($_.FullName))}

  foreach( $subdir in $subdirs )
  {
      # Write-Host( $subdir.Name + ", " + $subdir.FullName )
     if ( $subdir -ne $null )
     {
       ProcessDirectory -dir $subdir
     }
  }
}

$dirs = get-childitem $startLocation -force
$dirs | foreach { ProcessDirectory -dir $_ }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Get-ChildItem -force 报告“我的文档”文件夹和其他连接点上的“访问被拒绝” 的相关文章

随机推荐

  • create() 生命周期钩子中的 vue 异步调用

    我需要调用下面的方法created 为此 我需要做created as async 根据 Vue 文档 created 叫做同步地 将Vue框架await on created 避免任何竞争条件 this isAuthenticated a
  • MySQL 从 CSV 数据加载 NULL 值

    我有一个文件 其中可以包含 3 到 4 列数值 这些数值以逗号分隔 空字段的定义例外 当它们位于行末尾时 1 2 3 4 5 1 2 3 5 1 2 3 在 MySQL 中创建了下表 Field Type Null Key Default
  • 将字符串拆分为行的最有效方法

    我正在使用以下函数将字符串拆分为行 它比我之前使用的函数快得多 但是我需要以某种方式更快地处理这些数据 它是一项 ETL 作业 ALTER FUNCTION dbo ArrayToTable InputString VARCHAR MAX
  • 某些字体的字符宽度计算错误,可以自动缩进

    i create a normal textbox and type some i s inside the font i use is Lobster1 3 as you can see i just selection one char
  • SwiftUI 选择器选择绑定未更新

    我正在尝试让选择器列出所有类型 称为Course然后让用户在添加新课程时选择适当的课程Assignment到托管对象上下文 选择器选择绑定 courseIndex 当用户点击选取器视图中的行时不会更新 我不完全确定如何解决这个问题 也不知道
  • 客户端无权调用此 JAX-RS EJB 错误

    我已经寻找这个问题的解决方案有一段时间了 这里是 我按照本教程从数据库自动生成 jax rs Web 服务 https netbeans org kb docs websvc rest html https netbeans org kb
  • 创建具有两个列表中的多个值的字典。将多个键组合为一个

    我有两个清单 lists a b c d e keys 18 18 3 4 5 我想要的是这样的字典 18 a b 3 c 4 d 5 e 我不断得到这个 18 a b c d e 3 a b c d e 4 a b c d e 5 a b
  • String.concat 比连接字符串的数组方法慢吗

    JavaScript 中的字符串是不可变的 通过网络和Stack Overflow 上也有 https stackoverflow com questions 51185 are javascript strings immutable d
  • C++ 当模板参数推导失败时

    为什么 C 不能确定我打算创建一个unique ptr a 用这个语法 a 之前已被声明为unique ptr a a unique ptr new A 必须包括在内似乎非常多余 a 这适用于我使用的大多数函数模板 为什么 unique p
  • 单个 LINQ 查询中生成的迭代次数

    我在使用LINQ的时候总是有一个疑问 以下代码生成了多少个迭代器 测试是一个列表 var result from t in test where t Length gt 0 t Length lt 5 orderby t 0 select
  • 在Rplot_ly中添加箱线图显着性指示线和星号

    用于向绘图添加水平显着性条形图 和星形 的 Rplot ly 命令是什么 的答案 如何绘制显着水平的箱线图 https stackoverflow com questions 29263046 how to draw the boxplot
  • C/C++波形快速显示

    我有兴趣在 Windows 和 Linux 上用 C 或 C 实现音频编辑器 我不知道如何在完全缩小的视图中足够快地显示波形 我不是在寻找有关快速帧缓冲区技术的信息 这是一个关于有效确定显示内容的算法和数据结构的问题 假设我希望能够编辑 2
  • Interface Builder 文件中的未知类。 Xcode 6 和 Swift

    我用 swift 启动了一个普通的主细节项目 如果我添加新的视图控制器并设置自定义类 则模块列表为空 并且无法选择模块 错误消息 Interface Builder 文件中存在未知类 如果我运行代码 就会出现在控制台中 如何设置故事板以了解
  • IE 中的下拉菜单隐藏在其他元素后面

    我已经在我的一个项目上安装了 site5 上的 Boldy 主题 但遇到了一个主要问题 在 Internet Explorer 8 或更低版本 中浏览时 顶部下拉菜单会显示在其他一些元素 主要内容滑块 H1 等 后面 我已经尝试了一切 从将
  • 在 Web 部署上应用 EF 迁移

    我正在使用 asp net core 2 我似乎找不到任何选项或任何关于如何将迁移应用到 Web 部署发布上的数据库的指南 这将在应用程序启动时迁移您的数据库 您可以从 Startup 类中调用它 using var context new
  • 即使应用程序关闭后,NotifyIcon 仍保留在托盘中,但在鼠标悬停时消失

    有很多问题都提出同样的疑问 解决这个问题的方法是设置 notifyIcon icon null并打电话Dispose在 FormClosing 事件中 在我的应用程序中 没有这样的表单 但有根据事件更新的通知图标 在创作时 我隐藏我的形式并
  • Kendo UI Grid - 在哪里寻找字体和图标

    我正处于学习 Kendo UI 的早期阶段 我已经完成网格工作并加载数据 但没有出现应出现在网格中的图像 图标 当我加载包含网格的页面时 出现以下 404 错误 错误消息没有告诉我期望在哪里找到这些文件 Kendo UI 在哪里寻找这些文件
  • 在悬停时添加 CSS 边框而不移动元素 [重复]

    这个问题在这里已经有答案了 我有一行在悬停时应用背景突出显示 jobs item hover background e1e1e1 border top 1px solid d0d0d0 但是 由于边框增加了 1px额外的到元素 它使其 移动
  • Swift 中闭包如何捕获值?

    我正在运行下面的代码 class Element var name String init name String self name name deinit print Element is deinitializing var elem
  • Get-ChildItem -force 报告“我的文档”文件夹和其他连接点上的“访问被拒绝”

    我有一个我编写的脚本来替换文件 我将参数传递给它以获取文件名以及要搜索的基本位置 工人线是 SubLocations Get ChildItem Path Startlocation Recurse include Filename For