這裏添加了未掃描的設備名稱(離線等)非常非常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