gpt4 book ai didi

powershell - 如何确认文件不存在,而不是拒绝访问?

转载 作者:行者123 更新时间:2023-12-03 01:01:04 24 4
gpt4 key购买 nike

我使用Test-Path检查脚本中各种文件和文件夹的存在和连接。如果返回的值是$false,那么我将无法知道文件是否绝对不存在,或者用户帐户是否无法访问或连接到该路径。

在知道命令具有足够的访问和连接性的同时,如何检查并确定文件不存在?

我无法通过以下帖子获得此答案:

  • Check if a file exists or not in Windows PowerShell?
  • A better way to check if a path exists or not in PowerShell


  • 我将提供的建议@Matt组装成这样的函数:
    function Get-FileType([string]$Path)
    {
    try
    {
    get-item -LiteralPath $Path -ErrorAction Stop
    $exists = 'Exists'
    }
    catch [System.UnauthorizedAccessException] {$exists = 'Access Denied'} #Inaccessible
    catch [System.Management.Automation.ItemNotFoundException]{$exists = 'Not Found'} #Doesn't Exist
    catch [System.Management.Automation.DriveNotFoundException]{$exists = 'Not Found'} #Doesn't Exist
    catch {$exists='Unknown'} #Unknown

    return $exists
    }

    Get-FileType 'C:\test data\myfile.txt'

    最佳答案

    为什么不尝试获取该项目并检查错误消息(如果失败)。

    $path = "\\sqlskylinevm\path\file.txt"

    $file = try{
    Get-Item $path -ErrorAction Stop
    } catch [System.UnauthorizedAccessException] {
    "can't get to it"
    } catch [System.Management.Automation.ItemNotFoundException]{
    "does not exist"
    }

    if($file -eq "can't get to it"){
    Write-Warning "File exists but access is denied"
    } elseif($file -eq "does not exist"){
    Write-Warning "Could not find file"
    } else {
    Write-Host "Oh Happy Days!" -ForegroundColor Green
    }

    在这种情况下, $file将包含文本字符串,其中包含要测试的消息或文件/目录本身。您也可以使用 Test-Path ... -ErrorAction做同样的事情,我想这实际上取决于您想对发现进行什么处理。

    该代码并不理想,但可以为您提供所需的路径。它区分拒绝访问,不存在和确实存在。

    关于powershell - 如何确认文件不存在,而不是拒绝访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346351/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com