使用 PowerShell,我正在努力寻找一种机制来确定路径是否真的不存在,或者我是否没有权限。例如,如果我在有效但我没有权限的路径上使用“Test-Path”命令行开关,则结果将为 $false。我更喜欢使用 try / catch 块来尝试命令并捕获 unathorizedAccessException 异常或 ItemNotFoundException 异常并相应地处理响应。
任何援助将不胜感激。
使用 PowerShell,我正在努力寻找一种机制来确定路径是否真的不存在,或者我是否没有权限。例如,如果我在有效但我没有权限的路径上使用“Test-Path”命令行开关,则结果将为 $false。我更喜欢使用 try / catch 块来尝试命令并捕获 unathorizedAccessException 异常或 ItemNotFoundException 异常并相应地处理响应。
任何援助将不胜感激。
可能如果您正在使用调用命令并且访问被拒绝,那么您需要使用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 { '<...>' }
我个人使用此 .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.