所以我有一台可以完全访问内部网络的个人电脑(用于我需要做的事情)但我不确定这是代码问题还是我没有理解。
但我想在 300 多台设备上远程激活 Windows 7 HP。没有域,所有远程 PC 都是工作组。没有许可证服务器,密钥在文本文件中,两台 PC 上都有防火墙。所有名称相同,IP 不同,目标 PC 有受密码保护的帐户。
我尝试直接激活它,但一直被阻止,我猜是防火墙的问题,但很难直接关闭它,所以现在我试图启用文件和打印机共享和 WMI,因为这样我就可以毫无问题地激活它。(无法访问互联网)
ForEach ($IP in Get-Content "input.txt")
Invoke-Command { netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes }
psexec \\E:\FINAL\Enable FP\test.txt]][-u David [-p ] netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
答案1
域或工作组,您不能使用这个…
Invoke-Command
...除非启用了 PowerShell Remoting,并且您正在使用远程计算机上的本地管理员组中的用户帐户,并且必须将防火墙设置为允许它。
在工作组中设置 PSRemoting 需要更多步骤来设置。
如果您正在使用 PSRemoting,则无需使用 psexec。如果您正在使用 psexec,则没有理由使用 PSRemoting。
结合 psexec 和 PSremoting 的唯一原因是 PSRemoting 不允许您在机器上以本地用户帐户运行,而 psexec 可以。
要安装软件/启用功能,使用的用户帐户必须是远程主机上的本地管理员。
ForEach ($IP in (Get-Content 'input.txt'))
{
Invoke-Command -ComputerName $IP -Credential 'domain01\user01' -ScriptBlock {
netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes
}
}
您使用的是哪个版本的 PowerShell?您不使用防火墙 cmdlet,而是使用 netsh?
要执行您想要的操作,请使用 PSRemoting 或 psexec。