Power Shell 远程激活 Windows

Power Shell 远程激活 Windows

所以我有一台可以完全访问内部网络的个人电脑(用于我需要做的事情)但我不确定这是代码问题还是我没有理解。

但我想在 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 需要更多步骤来设置。

远程处理周:非域远程处理

两个工作组计算机之间的 PowerShell 远程处理

如果您正在使用 PSRemoting,则无需使用 psexec。如果您正在使用 psexec,则没有理由使用 PSRemoting。

结合 psexec 和 PSremoting 的唯一原因是 PSRemoting 不允许您在机器上以本地用户帐户运行,而 psexec 可以。

要安装软件/启用功能,使用的用户帐户必须是远程主机上的本地管理员。

你的调用命令语法也不正确。您的For循环语法不正确。

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。

相关内容