我想在powershell脚本中运行nslookup,将输出分配给我可以解析的字符串变量。我不想在CMD执行的powershell窗口中看到回声,如“非权威答案:”,但是我试图将命令的输出专门输入或重定向到变量的所有内容都没有工作或破坏变量。Powershell:如何摆脱CMD输出,同时分配一个变量(nslookup)
例子:
PS> $temp = (& nslookup 'myip.opendns.com','resolver1.opendns.com');
Non-authoritative answer:
我试过几个变通......
PS> $temp = Invoke-Expression "cmd /c nslookup myip.opendns.com resolver1.opendns.com" >$null
PS> $temp = Invoke-Expression "cmd /c @ECHO off && nslookup myip.opendns.com resolver1.opendns.com"
也许有一个更好的方式来做到这一点。我在这里使用字符串来获取IP地址的方式比我想要的多了几行。
$temp = (nslookup myip.opendns.com resolver1.opendns.com) | Out-String
$temp = $temp.split()
$tempIPs = $temp -match "^(.|\r|\n)*?\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b"
$publicIP = $tempIPs[1]
return $PublicIP
我,因为使用两个服务器,像我用NSLOOKUP做,似乎并不使用PowerShell的决心,DNSNAME命令上班走了这条路线。我需要两台服务器,因为我正在重定向查找以获取公有IP。还有其他方法可以做到这一点,但是这个工作非常好,(invoke-WebRequest ifconfig.me/ip).Content
在处理这个脚本时对我产生了一些影响。
这在这种情况下不起作用。我很想跳过旧的CMD文件,但就像我在最后一段中提到的那样,我还没有找到一种纯粹的PowerShell方式来处理2台服务器。我在我们的帖子中试过命令,它抱怨说“没有这样的主机在已知的”。 ...我发誓我不是在跟自己说话。这里有另一个评论,现在它消失了。 Oo – TwoRoses
您可以将错误消息重定向到像这样的'nslookup'myip.opendns.com resolver1.opendns.com 2> out-null' –