2017-06-29 33 views
0

我正在执行的PowerShell中nslookup命令,并得到输出如下:我如何捕获在PowerShell中执行命令所显示的信息?

服务器:***** ****** ***

地址:*。

* *****。******。PVT找不到。*。**:服务器故障

捕获此输出的日志似乎为空。有没有什么办法可以捕获主机上显示的服务器失败错误?

+1

的是,从输出'nslookup'?在这种情况下,错误发送到stderr,你可以使用'2>'重定向。请参阅'help about_Redirection'。 –

+0

感谢@Bill_Stewart,这帮助我在正确的方向看它 – Karthish

回答

0

你必须自己分析的结果,但这是它是如何工作:

$variable = & nslookup args 2>&1 

$variable 
+0

这有助于我可以通过使用$ variable [0]和$ variable [2]的正常输出访问stderr,并根据需要解析它们中的每一个。谢谢! – Karthish

+0

当你有'[Net.Dns]'类时为什么要解析输出? –

+0

[Net.Dns]类实际上更容易使用,但是当没有找到主机时,我必须通过stderr进行解析,以获取catch语句中错误的确切信息/类型。 – Karthish

0

如果您重定向nslookup的输出,则无需在PowerShell中使用[Net.Dns]类。如果主机存在,它将返回[Net.IPHostEntry]。例如:

try { 
    if ([Net.Dns]::GetHostEntry("remoteserver")) { 
    "Host exists" 
    } 
} 
catch [Management.Automation.MethodInvocationException] { 
    "Host does not exist" 
} 

GetHostEntry方法可以解决使用主机名或IP地址。