通过powershell在多台机器上刷新dns和注册dns

Iro*_*nic 4 powershell

简单的问题,但目前无法在谷歌上找到答案。我的powershell版本是2。我想在多台机器上刷新并注册dns。

ipconfig /flushDns

ipconfig /registerdns
Run Code Online (Sandbox Code Playgroud)

我无法使用调用命令,并且计算机上未启用 psremoting。

任何建议如何刷新 DNS 和注册 DNS。

Ade*_*SIF 5

这很容易Invoke-wmimethod

在名为 的文件中创建计算机列表servers.txt,然后创建如下脚本:

$listofservers = Get-Content .\servers.txt

foreach ($servers in $listofservers) {

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("cmd.exe /c ipconfig /flushdns") -ComputerName $servers

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("cmd.exe /c ipconfig /registerdns") -ComputerName $servers

}
Run Code Online (Sandbox Code Playgroud)

默认情况下,您不会获得命令的输出,但只有当命令通过此值在远程计算机上成功运行时,您才会获得信息:

ReturnValue 
Run Code Online (Sandbox Code Playgroud)

如果该值等于0则表示该命令已在远程服务器上成功执行。

如果你想获取命令输出,你可以通过添加输出重定向到txt文件来实现:

$listofservers = Get-Content .\servers.txt

foreach ($servers in $listofservers) {

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("cmd.exe /c ipconfig /flushdns > c:\flushdnsresult.txt") -ComputerName $servers

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("cmd.exe /c ipconfig /registerdns > c:\registerdnsresult.txt") -ComputerName $servers

}
Run Code Online (Sandbox Code Playgroud)

然后您将在远程服务器上找到一个 txt 文件,其中包含 cmd 命令的结果输出。