这里添加了未扫描的设备名称(离线等)非常非常PowerShell的新手,我想一个脚本来扫描网络上的设备和本地管理员报告。找到了一个,并做了一些小的修改以满足我的需求 - 但我有一个MOD我无法解决如何做。希望有人会知道一个简单的方法来做到这一点?我如何通过PowerShell脚本
下面的纸条将在设备名称列表读取 - 扫描,然后输出上实时和在线的所有设备过时报告。如果设备不可访问,我会在屏幕上看到以下错误,但报告中没有任何内容。
在遇到它写入报告文件中的错误,我想 - “!$ - 计算机是无法访问”的线沿线的东西
我使用的代码是
$date = Get-Date -Format o | foreach {$_ -replace ":", "."}
ECHO "Starting scan"
$Result = @()
foreach($server in (gc .\servers.txt)){
$computer = [ADSI](”WinNT://” + $server + “,computer”)
$Group = $computer.psbase.children.find(”Administrators”)
$Filename = "c:\" + "LocalAdminAudit" + $date + ".txt"
function getAdmins
{
ECHO "SEARCHING FOR DEVICE"
$members = ($Group.psbase.invoke(”Members”) | %
{$_.GetType().InvokeMember(”Adspath”, ‘GetProperty’, $null, $_, $null)}) -
replace ('WinNT://DOMAIN/' + $server + '/'), '' -replace ('WinNT://DOMAIN/',
'DOMAIN\') -replace ('WinNT://', '')
$members}
ECHO "READY TO WRITE OUTPUT"
$Result += Write-Output "SERVER: $server"
$Result += Write-Output ' '
$Result += (getAdmins)
$Result += Write-Output '____________________________'
$Result += Write-Output ' '
ECHO "Record written"
}
# Added date run to report
$result += Write-Output "Date Reported: $date"
$Result > $Filename
Invoke-Item $Filename
# replace "DOMAIN" with the domain name.
ECHO "Scan Complete"
而上,当机器处于离线或其他不响应屏幕上的错误是
异常调用“查找”和“1”的说法( s):“没有找到网络路径” “ at \ server \ users \ User.Name \ Powershell Scripts \ Get-Local-AdminsV3.ps1:1 0 char:40 + $ Group = $ computer.psbase .children.find < < < < (”管理员”) + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException
当它遇到一个错误,将其写入报告文件,我想 - 这是一起“$的线计算机无法访问!“ - 我敢肯定,必须有这样做的一个简单的方法 - 但我不能工作了,因此任何提示,将不胜感激
您需要使用try catch块来对该错误作出反应。然后,在'catch'中,您可以添加相应的错误操作。 – Matt