0

使用 PowerShell,我正在努力寻找一种机制来确定路径是否真的不存在,或者我是否没有权限。例如,如果我在有效但我没有权限的路径上使用“Test-Path”命令行开关,则结果将为 $false。我更喜欢使用 try / catch 块来尝试命令并捕获 unathorizedAccessException 异常或 ItemNotFoundException 异常并相应地处理响应。

任何援助将不胜感激。

4

2 回答 2

1

可能如果您正在使用调用命令并且访问被拒绝,那么您需要使用Cred-SSP.

例如:

$UserName='<username>'
$securekey= ConvertTo-SecureString '<secure-key>' -AsPlainText -Force;
$credentialdetail= New-Object System.Management.Automation.PSCredential -ArgumentList $UserName,$securekey;

Invoke-Command -Credentials $credentialdetail -ComputerName '<computername>' -Authentication CredSSP -ScriptBlock { '<...>' }
于 2016-12-29T10:11:40.943 回答
0

我个人使用此 .net 代码来捕获访问共享或本地路径的异常:

在 powershell 中添加此类型

add-type @"
using System;
using System.IO;

public class CheckFolderAccess {

 public static string HasAccessToWrite(string path)
        {
            try
            {
                using  (FileStream fs = File.Create(Path.Combine(path, "Testing.txt"), 1, FileOptions.DeleteOnClose))
                { }
                return "Allowed";
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }

}
"@

以这种方式使用它:

> [checkfolderaccess]::HasAccessToWrite("\\server\c$\system volume information")
Access to path '\\server\c$\system volume information\Testing.txt' denied.


> [checkfolderaccess]::HasAccessToWrite("\\nonexistingserver\nonexistingpath")
Path not found.
于 2012-05-08T05:02:57.117 回答