我正在嘗試製作一個腳本來解析一長串域名到IP地址。其中一些沒有定義,我需要捕捉錯誤,並返回一個「空白值」。在下面的腳本中,我嘗試使用基本的If/Then來做這件事,但我仍然得到一個羅嗦的錯誤(在底部),而不是一個空白值。任何想法如何解決這個問題?對此,我真的非常感激!在PowerShell中捕獲錯誤並重寫輸出
----- ----- SCRIPT
$names = Get-Content C:\temp\names.txt
ForEach ($name in $names) {
$ipAddress = [System.Net.Dns]::GetHostAddresses("$name")[0].IPAddressToString;
if ($ipAddress) {
Write-Host $name"-"$ipAddress
}
else {
Write-Host $name"-"
}
}
----輸出/錯誤----
mydomain.com-1.2.3.4
yourdomain.com-4.3.2.1
Exception calling "GetHostAddresses" with "1" argument(s): "The requested name is valid, but no data of the requested type was found"
anotherdomain.com-5.5.5.5
----我想見-----
mydomain.com-1.2.3.4
yourdomain.com-4.3.2.1
NOTDEFINEDDOMAIN.tld-
anotherdomain.com-5.5.5.5
----這裏是一個工作的解決方案 - 謝謝!----
$names = Get-Content C:\temp\names.txt
ForEach ($name in $names) {
Try {
$ipAddress = [System.Net.Dns]::GetHostAddresses("$name")[0].IPAddressToString;
Write-Host $name"-"$ipAddress
}
Catch {
Write-Host $name"-"
}
}
這是奇怪的。我不能重現調用'[System.Net.Dns] :: GetHostAddresses(「doesnotexit」)[0] .IPAddressToString;'你使用的是什麼版本的powershell? –
嗨尼克 - 我正在使用版本5.我跑了上面,並再次得到錯誤... –
甚至陌生人!我也在版本5中。嗯... –