问题
我想为 VLAN 上的所有工作站主机启用远程 powershell 脚本。没有任何 Active Directory 或目录服务。因此,子网 192.168.1.x 上的主机 A 想要查询主机 B 192.168.2.x。
我已经运行过:
Enable-PSRemoting -force
对于 VLAN 上的任何工作站来说,提示输入凭证都是理想的结果。管理工作站位于子网 192.168.1.x 上,IP 范围为 192.168.1.10-20。
问题
是否可以允许该范围内的主机或来自特定子网的任何 IP 进行 powershell 远程身份验证?:
192.168.1.0/24
澄清一下:我正在设置要部署的工作站,我希望它们能够允许我在现场使用远程 powershell 电源。我的管理站位于一个子网,要部署的工作站位于其他多个子网。
阅读手册
我正在查看来自微软的这个链接:
http://technet.microsoft.com/en-us/magazine/ff700227.aspx
这意味着我需要为每台管理计算机运行以下命令:
winrm s winrm/config/client '@{TrustedHosts="RemoteComputer"}'
有人可以证实或反驳这一点吗?
答案1
如果您不使用 Kerberos/AD 身份验证,则必须将每台机器添加到 TrustedHosts 配置中 - 或者 - 您必须在每个节点之间设置 SSL。实现前者的最佳方法当然是使用脚本。可能是使用文件中的机器名称列表的脚本。
其次,您可以运行具有“协商”身份验证的 PSRemoting 会话,它将提示您输入凭据,如下所示:
上面的截图中我没有收到输入凭据的提示,唯一的原因是我已经将凭据存储在 $creds 变量中。否则它会提示你。
我并不是想自我推销,但我在我的博客上详细介绍了所有这些主题(第 1 部分和第 2 部分),我相信这会对你有所帮助:
您必须在尝试建立连接的计算机上将主机添加到 TrustedHosts 列表中的原因是由于固有缺乏相互的在非 Kerberos 或 SSL 环境中进行身份验证。
(为清晰起见,已编辑。)
答案2
很难理解您到底在请求什么,但如果我理解正确的话,这可能会有所帮助。基本上循环遍历 192.168.2.0/24,ping 它,如果它响应,则运行您发布的命令。
$fourthoctet = 0..255
Foreach ($fo in $fourthoctet)
{
$ip = (new-object System.Net.Networkinformation.Ping).Send("192.168.2.$fo") | where-object {$_.Status -eq "success"} | select Address
If ($ip -ne $null)
{
Enable-PSRemoting -force $($ip.address)
}
}
答案3
* 实际上充当 IP 地址的通配符。例如>
winrm set winrm/config/client @{TrustedHosts="10.1.0.*"}