我尝试检索计算机名称及其当前操作系统的列表。 一切都运行正常,我在这个特定的服务器上没有访问我的凭据。 解释:要登录服务器,我必须使用另一个帐户。 对于每个用户ist CurrentUserName +“ad”(对于ADministration) servers.txt就像
Server1
Server2
Server3
...
让我告诉你两次尝试。
1
$Login = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name +"ad"
$cred = Get-Credential $Login
$servers = get-Content .\server.txt
$OS = Get-WmiObject -class Win32_OperatingSystem -computername $servers -Credential $cred
$OS | Select-Object CSName, Caption, OSArchitecture | Export-CSV -path .\$(get-date -f yyyyMMd)_CurrentOS.csv
$OS | select CSName, Caption, OSArchitecture | Out-GridView -Title 'Current OS'
一切都很好,直到我添加一个我没有登录权限的服务器。 之后我得到以下错误,没有服务器成功。
Get-WmiObject:Zugriff verweigert(Ausnahme von HRESULT:0x80070005(E_ACCESSDENIED))
2
$Login = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name +"ad"
$cred = Get-Credential $Login
$servers = get-Content .\server.txt
foreach ($server in $servers)
{
Try {
$OS = Get-WmiObject -class Win32_OperatingSystem -computername $server -Credential $cred -ea SilentlyContinue
} Catch {
Write-Host 'Logon Credentials not accepted. No access to'$Server'.' -fore white -back red
} Finally {
Write-Host 'Logon Credentials accepted. Grant access to'$Server'.'
}
}
$OS | Select-Object CSName, Caption, OSArchitecture | Export-CSV -path .\$(get-date -f yyyyMMd)_CurrentOS.csv
$OS | select CSName, Caption, OSArchitecture | Out-GridView -Title 'Current OS'
屏幕上的输出很好,除了“Out-GridView”这里只是GridView中显示的最后一个服务器。
已接受登录凭据。授予访问DEBZIAPP104的权限。
添加这个“坏服务器”时我会得到
已接受登录凭据。授予访问DEBZIAPP104的权限。
不接受登录凭据。无法访问DEBZIAPP106。
已接受登录凭据。授予访问DEBZIAPP106的权限。
我想列出所有正常的服务器。如果出现我没有登录权限的服务器,则应显示一条消息,并且脚本需要继续。
请询问是否有任何不清楚的地方。 希望有人能提供帮助。 :)
电贺, 帕特里克
答案 0 :(得分:0)
Try
/ Catch
只能捕获终止错误。
这应该让你直截了当:
$OS = Get-WmiObject -class Win32_OperatingSystem -computername $server -Credential $cred -ea Stop