使用 Powershell 和 Test-Path,如何区分“文件夹不存在”和“访问被拒绝”

2023-11-27

在powershell中使用Test-Path命令,如何区分“文件夹不存在”和“访问被拒绝”?


TL;DR:好消息是Test-Path即使您缺乏权限,通常也不会返回 false(当没有权限时,您会得到一个异常,而不是一个简单的$false)

更深入地说,这取决于您所说的拒绝访问的含义。根据您要检查的权限,将取决于适用于您的 PowerShell 命令。

例如,C:\系统卷信息是非管理员没有权限的文件夹。Test-Path对此文件夹返回 true - 它存在 - 即使您无法访问它。另一方面,跑步Get-Child-Item失败了。所以在这种情况下,你需要运行

$path = 'C:\System Volume Information'
if ((Test-Path $path) -eq $true)
{
    gci $path -ErrorAction SilentlyContinue
    if ($Error[0].Exception -is [System.UnauthorizedAccessException])
    {
        # your code here
        Write-Host "unable to access $path"
    }
}

但是,如果您具有读取权限但没有写入权限,那么您必须实际尝试写入该文件,或者查看其安全权限并尝试找出适用于脚本运行的当前用户的内容:

(get-acl C:\windows\system32\drivers\etc\hosts).Access
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Powershell 和 Test-Path,如何区分“文件夹不存在”和“访问被拒绝” 的相关文章

  • 如何忽略警告错误?

    我有以下 PowerShell 脚本 它获取给定 IP 地址内计算机的 NetBIOS 名称 我正在使用管道将结果转储到文本文件中 问题是 如果 IP 地址不可用 则会打印警告 这是 PowerShell 脚本 function Get C
  • Powershell 查询的升序和降序

    下面的查询将列出 powershell 中的 cmdlet get command CommandType cmdlet Group Object Property verb 因为我需要按降序对列数进行排序 然后按升序对列进行命名 以下查询
  • 如何使用 PowerShell 2 的导出 csv 附加文件?

    filesremoved export csv Path E Code powershell logs filesremoved txt NoTypeInformation 我也尝试过 filesremoved export csv Pat
  • 使用 powershell 编辑 XML

    好吧 我感觉自己像个大白痴 为了工作中的管理目的 我使用 Powershell 已经有一段时间了 也就是说 编写脚本不是我的强项 现在 我正在尝试编写一个 PS 脚本 将一个部分添加到一堆机器上的 XML 中 以添加设置来解决我们在某个应用
  • PowerShell 脚本 ffmpeg

    作为一名优秀的 Windows 系统管理员 我终于开始学习 PowerShell 话虽这么说 我不知道我在做什么 惊讶 惊讶 我认为远离生产环境 在家里使用 PowerShell 对我来说将是一次很好的学习经历 最近 我开始使用 FFMPE
  • 通过 Powershell 拆分 9 GB csv 文件时遇到问题

    我有一个大约 9 GB 的大型 csv 文件 在 Powershell 中 我需要将其拆分为 10 MB 的块 问题是我需要保持行完整 因此每个分割文件在一行的末尾结束 并在下一行的开头开始 由于文件太大 我需要一种拆分它的方法 该方法不会
  • Powershell脚本将多个远程地址添加到防火墙规则

    我正在尝试编写一个脚本 该脚本将循环遍历本地防火墙规则并更新远程地址表 这是我到目前为止所拥有的 它不起作用 应该很简单 所以不确定发生了什么 该脚本运行时没有错误 但实际上并没有更新任何内容 name Get NetFirewallRul
  • Powershell - 从图像网址下载图像

    对 powershell 的了解有限 我尝试从图像网址下载图像 例如这样 http hdwallpaperia com wp content uploads 2014 01 Mc Laren P1 Wallpaper Image Pictu
  • 将 Unicode 字符串转换为 ASCII

    我的字符串包含 ASCII 中未找到的字符 如 我需要一个函数将它们转换为可接受的内容 例如 a e i o u 这是因为我将根据这些字符串创建 IIS 网站 即我将使用它们作为域名 function Convert DiacriticCh
  • 在Windows中根据修改日期删除数百万个文件的最有效方法

    目标 使用脚本运行 500 万至 1000 万个 XML 文件并评估其日期 如果超过 90 天则删除该文件 该脚本将每天运行 问题 使用 powershell Get ChildItem recurse 会导致脚本锁定并无法删除任何文件 我
  • 修改 xml 同时保留空格

    我在尝试替换 XML 文件中的属性同时保留空格时遇到了几个问题 尝试1 xml xml get content data xml xml Path To Attribute value set content data xml String
  • 获取在特定日期之后修改的一组文件

    有没有人有一个方便的 powershell 脚本根据修改日期从 TFS 获取一组文件 我想说 给我这个文件夹 或子文件夹 中在 X Y ZZZZ 之后修改的所有文件 并将这些文件转储到它们通常所在的文件夹之外的文件夹中 我知道足够的 pow
  • 我应该安装哪个驱动程序才能使用 powershell 运行 mysqlcommand?

    我安装了 mysql 连接器 ODBC 5 1 8 来运行 sqlcommand 但出现此错误 Cannot find type MySql Data MySqlClient MySqlConnection make sure the as
  • 无法使用 Powershell 2.0 压缩文件

    Q1 我尝试了几种压缩方法 但在我的机器上都不起作用 我只能使用外部压缩工具 7z exe 来压缩文件 但我没有权限在 serverA 中安装 7z exe 文件 也没有权限将 powershell 更新到 v5 目前使用powershel
  • Powershell,如何添加共享文件夹的权限

    我有以下创建共享文件夹的代码 if Test Path c myFolder New Item Path c myFolder ItemType Directory If GET WMIOBJECT Win32 Share Filter N
  • VSTS 任务组 Powershell 参数

    我使用具有四个参数的 Azure Powershell 任务内联脚本创建了 VSTS 任务组 我已将此任务组添加到发布定义并配置参数 当我尝试释放时失败并出现以下错误 2018 03 23T10 28 42 2811600Z 错误 在 C
  • 如何设置文件的LastWriteTime属性?

    我想更改使用此脚本生成的文件的创建日期 clientname Read Host Enter the client name path Read Host Enter the complete path of bak files time
  • $ 之间的区别?和 PowerShell 中的 $LastExitCode

    在 PowerShell 中 有什么区别 and LastExitCode I read 关于自动变量 http technet microsoft com en us library dd347675 aspx 它说 Contains t
  • 如何根据事件触发SSRS订阅?

    有没有一种方法可以让我在共享文件夹中创建文件等事件时触发 SSRS 订阅 基于时间 我们可以使用 powershell 或 C 来实现吗 SSRS 中是否有可用的开箱即用功能 尽管我认为没有 我正在使用 SQL Server 2008 R2
  • powershell 和 cmd 之间的文件大小不同[重复]

    这个问题在这里已经有答案了 我正在使用一点processconf js工具来构建configuration json来自多个文件 json files 这是我正在使用的命令 node processconf js file1 json fi

随机推荐