Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:如何在分配变量(nslookup)时去掉CMD输出_Powershell_Redirect_Cmd_Ip_Nslookup - Fatal编程技术网

Powershell:如何在分配变量(nslookup)时去掉CMD输出

Powershell:如何在分配变量(nslookup)时去掉CMD输出,powershell,redirect,cmd,ip,nslookup,Powershell,Redirect,Cmd,Ip,Nslookup,我想在powershell脚本中运行nslookup,将输出分配给可以解析的字符串变量。我不想在CMD执行的powershell窗口中看到类似“非权威答案:”的回音,但我尝试将命令的输出以管道方式或重定向方式专用于变量的所有内容都没有起作用或破坏变量 例如: PS> $temp = (& nslookup 'myip.opendns.com','resolver1.opendns.com'); Non-authoritative answer: 我试过几种解决方法 PS>

我想在powershell脚本中运行nslookup,将输出分配给可以解析的字符串变量。我不想在CMD执行的powershell窗口中看到类似“非权威答案:”的回音,但我尝试将命令的输出以管道方式或重定向方式专用于变量的所有内容都没有起作用或破坏变量

例如:

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的Resolve DnsName命令。我需要这两台服务器,因为我正在重定向查找以获取我的公共IP。还有其他方法可以做到这一点,但这一种非常有效,并且
(调用WebRequest ifconfig.me/ip)。在使用此脚本时,内容
在我身上闪烁。

您可以通过指定
resolve DnsName
-server
参数来指定要解析查询的服务器

Resolve-DnsName -Name myip.opendns.com -Server resolver1.opendns.com
对于
Resolve DnsName
命令:

-服务器
指定要查询的DNS服务器的IP地址或主机名。默认情况下,如果未提供此参数,将查询接口DNS服务器


这在这种情况下不起作用。我很想跳过旧的CMD文件,但正如我在最后一段中提到的,我还没有找到一种纯粹的powershell方法来处理2台服务器。我在我们的岗位上试过这个命令,它抱怨说“没有已知的这样的主人”。。。我发誓我不是在自言自语。这里有另一条评论,现在它不见了。O.O您可以像这样将错误消息重定向到null
nslookup“myip.opendns.com resolver1.opendns.com 2>out null
感谢您清除该命令,我不知怎的以为我正在尝试将一台服务器解析到另一台服务器,但我不知道其中一台需要指定为名称。现在我看到了,这是有意义的。