powershell - 我需要帮助来了解PowerShell安全性和文件访问问题

标签 powershell file-access

我正在使用PowerShell,正在运行包含以下行的脚本(从我的控制台):

$inpath = "C:\users\xxxxx\path\foo\bar"

而且我不断收到此错误:
Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied.
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12
+ Get-Content <<<<  $txtfile | Get-WordCount -Exclude (Get-Content c:\temp\exclude.txt) | select -First 15
    + CategoryInfo          : PermissionDenied: (C:\users\xxxxx\path\foo\bar:String) [Get-Content], UnauthorizedAcc
   essException
    + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand

脚本和目标文件都位于我的本地驱动器上。我可以在资源管理器中访问文件,使用记事本查看/编辑/保存文件,并且没有设置任何权限限制。在命令行上时,我可以在路径中的文件上成功运行get-content cmdlet。我可以更改目录PS C:> cd C:\users\xxxxx\path\foo\bar并成功列出其中的内容。更有趣的是,我可以复制脚本中出错的行,而不会在命令行上收到错误。
PS C:\users\xxxxx\path\foo> $inpath = "C:\users\xxxxx\path\foo\bar"
PS C:\users\xxxxx\path\foo>

这使我怀疑“权限被拒绝”错误实际上是其他错误,或者是足够模糊的错误,以至于我不知道如何继续进行故障排除。 PS可能与运行它的用户具有不同的权限吗?以前有没有人见过这种行为,您是如何解决该问题的?我确定有一个我不知道的简单解决方案。

最佳答案

Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied.
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12


该路径看起来不是文件而是文件夹。

您确定要将文件名附加到文件夹并将其传递给Get-Content吗?

当您尝试打开目录时,如果没有传递任何额外的标志,Windows就会将其拒绝访问。 .NET不会传递这些标志(打开文件夹有一些特定情况,但在这里不适用)。

关于powershell - 我需要帮助来了解PowerShell安全性和文件访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483711/

相关文章:

powershell - 从字符串输出格式化表格

Java - 通过用户身份验证访问文件

c - 如何阻止同一进程中的其他函数访问文件?

powershell - 如何在 Powershell 中将元素添加到数组前面?

excel - 如何在 Excel 或 Powershell 中根据 IP 地址搜索域名?

visual-studio - 在 NuGet Init.ps1 中创建或获取解决方案文件夹

powershell - powershell-在函数内部显示数组

java - 如何以独立于平台的方式访问 java 资源?

android - 从 SD 卡中选择文件从固定路径到移动浏览器

Android Q : java. io.FileNotFoundException:/proc/self/net/dev:打开失败:EACCES(权限被拒绝)