Powershell Access拒绝错误捕获问题

时间:2018-04-09 21:59:43

标签: powershell

我有一个脚本,它通过服务器列表并检查DNS条目是否设置为特定值。

当我进行WMI调用以捕获任何错误并将它们写入屏幕和文本文件时,我设置了一个环境变量。它正在写一个截断版本的错误(这就是我想要的)除了"访问被拒绝"。在该错误上,它会转储整个堆栈。

我的问题是,我如何获得拒绝接入"错误堆栈只是报告类似Access的内容被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))。

奇怪的是,当我运行脚本时,只需键入$ err并按Enter键即可获得以下内容:

PS C:\ myScripts> $犯错 访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))

当我尝试Write-Host $ err或Add-Content $ err时,我得到了整个错误堆栈。 (如果你愿意,我可以发布它...只是想节省空间。)

脚本:

$ErrorActionPreference = "SilentlyContinue"

Clear-Content C:\myScripts\iofiles\dns.txt
$servers = Get-Content "C:\myScripts\iofiles\hosts.txt" 

#Set the DNS values to check for
$newDNS1 = "1.1.1.1" #placeholder value 
$newDNS2 = "1.1.1.2" #placeholder value 


ForEach($server in $servers){
    Write-Host ""
    Write-Host "Checking" $server -ForegroundColor Cyan
    $wmi = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $server -filter "ipenabled='true'" -ea "SilentlyContinue" -ev err
    $primaryDNS = $wmi.DNSServerSearchOrder[0]
    $secondaryDNS = $wmi.DNSServerSearchOrder[1]

    if ($err.count -gt 0) {
        Add-Content C:\myScripts\iofiles\dns.txt "$server - $err"
        Write-Host "Error on $name $err" -ForegroundColor Red
    }else{

        if ($primaryDNS -ne $newDNS1) {
        Add-Content C:\myScripts\iofiles\dns.txt "$server - Primary DNS incorrectly set - $primaryDNS"
        Write-Host "Primary DNS incorrectly set: " -ForegroundColor Yellow -NoNewline; Write-Host $primaryDNS -ForegroundColor Red
        }else{
            Write-Host "Primary DNS Correct" -ForegroundColor Green

        }if ($secondaryDNS -ne $newDNS2) {
        Add-Content C:\myScripts\iofiles\dns.txt "$server - Secondary DNS incorrectly set - $secondaryDNS"
        Write-Host "Secondary incorrectly set: " -ForegroundColor Yellow -NoNewline; Write-host $secondaryDNS -ForegroundColor Red
        }else{
            Write-Host "Secondary DNS correct" -ForegroundColor Green
            }
        }
}#END ForEach                   

1 个答案:

答案 0 :(得分:0)

可能您遇到与DCOM相关的错误:

0x80070005 - E_ACCESS_DENIED:DCOM安全拒绝访问。

  

用户无法通过DCOM远程访问计算机。   通常,连接到远程计算机时会发生DCOM错误   一个不同的操作系统版本。

     

授予用户远程启动和远程激活权限   DCOMCNFG。右键单击我的电脑 - > COM安全下的属性,   单击两个部分的“编辑限制”。为您想要的用户提供远程服务   访问,远程启动和远程激活。然后去DCOM配置,   找到“Windows Management Instrumentation”,并为您提供所需的用户   远程启动和远程激活。有关更多信息,请参阅   连接不同的操作系统