将命令推送到所有域 PC

将命令推送到所有域 PC

我正在寻找一种将命令推送到所有工作站的方法。场景如下:

我经常去我不熟悉的环境来审计网络。其中一部分是网络扫描,但要使用我们的特定工具,我们需要在每个工作站上配置几项内容(启用 wmi 访问、启用文件和打印机共享等)。我们有一个可以在每台计算机上运行的批处理文件,但这种解决方案的扩展性并不如您想象的那么好。我已将我们运行的命令包含在下方。

理想情况下,应该有一种方法可以将批处理文件推送到连接到域的所有计算机上,一次性运行。或者,我们可以创建一个新的批处理文件,创建执行相同操作的 GPO,但这是我以前没有做过的事情。

非常感谢您的帮助!

rem Allow the device to be pingable through Windows Firewall
netsh firewall set icmpsetting type=ALL mode=enable
netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
netsh advfirewall firewall add rule name="ICMP Allow incoming V6 echo request" protocol=icmpv6:8,any dir=in action=allow

rem Turn on File and Printer Sharing
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

rem Allow WMI access through Windows Firewall
netsh firewall set service type=remoteadmin mode=enable
netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes

rem Add user account
net user [REDACTED] /add
net localgroup Administrators [REDACTED] /add

Rem Set WMI Permissions
sc sdset SCMANAGER D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

ECHO End of script
PAUSE

答案1

防火墙设置和本地用户和组可以直接由 GPO 控制,您无需运行批处理文件来设置它们。

相关设置:

在此处输入图片描述

在此处输入图片描述

答案2

针对您的评论的附加答案。

GPO 不提供任何立即执行某项操作的方法;其次最好的方法是启动脚本,但它只会在下次重新启动机器时执行。

如果您确实需要立即在所有域计算机上执行命令,则可以使用 PowerShell Remoting 针对 Active Directory 查询返回的所有计算机对象运行命令,如下所示:

$Computers = Get-ADComputer -Filter {Enabled -eq $True} -searchbase "OU=myou,DC=domain,DC=tld"

foreach ($Computer in $Computers) {

    Invoke-Command -ComputerName $_.Name -ScriptBlock {
    
        # Your script here
    }
}

当然,您可以向 LDAP 搜索添加其他过滤器和/或更改搜索基础;测试计算机是否实际运行且可访问也是明智之举,否则您将不得不等待Invoke-Command每台无法访问的计算机超时。

相关内容