Windows主机间批量操作的基本配置

版权声明:本文章为博主原创文章,未经博主允许不得转载,如有问题,欢迎留言交流指正 https://blog.csdn.net/finalkof1983/article/details/90736724

基础材料

POWERSHELL 2.0以上  Windows2008 Windows2012 Windows2016 Windows10 关闭防火墙

总体说明

Windows server的批量操作与linux系统的一些批量管理软件类似,使用一台Window主机作为管理机(最好是高版本管理低版本),通过建立互信的方式,由管理机统一发送命令到远程主机执行。其中不同的一点是Windows需要建立的是双向互信,而linux中建立单向互信即可。本次只使用windows自带powershell进行处理,后续有额外需要也可以使用ansible进行纳管处理。

Windows主机批量操作

客户端准备工作

1、所有被管理主机创建到管理端互信,客户端Powershell中运行命令:

winrm quickconfig

根据提示输入y,回车

set-item wsman:\localhost\client\trustedhosts -value (管理端ip地址)

回车

管理端准备工作:

1、管理端主机建立到所有主机的信任关系,管理端Powershell中运行命令:

set-item wsman:\localhost\client\trustedhosts -value *

根据输出提示,回车(添加到所有主机的信任)

set-executionpolicy remotesigned  

根据输出提示,回车(打开管理端脚本执行策略)

2、安装powershell ISE集中环境

点击服务器管理器,点击功能,点击添加功能,选择powershell ISE(会提示安装framework3.5.1),选择继续

3、准备所有客户端IP列表以文本保存,一行一个IP,如test.txt:

192.168.0.20

192.168.0.21

4、创建批量命令脚本,保存后缀为test.sp1,脚本中IP数量-1根据实际客户端情况替换为相应数值,该值指定了循环操作的总次数,其余操作命令根据实际情况替换-scriptblock {}中的内容即可,以下为例的三个命令分别是为每台客户端添加用户test123、将test123加入管理员组,修改administrator密码:

for($i=0;$i -le IP数量-1;$i++)

{

echo (get-content c:\test.txt)[$i]

invoke-command -computername (get-content c:\test.txt)[$i] -scriptblock {net user test123 “test@123” /add}

invoke-command -computername (get-content c:\test.txt)[$i] -scriptblock {net localgroup administrators test123 /add}

invoke-command -computername (get-content c:\test.txt)[$i] -scriptblock {net user administrator “123456”}

}

5、打开运行命令窗口,输入powershell_ise.exe,回车,弹出界面中将批量命令脚本拖入框中,选中所有行,点击执行,观察结果即可

关于循环命令执行的说明:

如果只是单纯的完成批量作业,并不一定需要使用for循环然后再将各个ip地址分别代入循环中作为参数执行,可以直接使用命令invoke-command -computername (get-content c:\test.txt) -scriptblock {}即可。但是这样如果其中一个主机执行不成功,不方便排查。在for循环中每次打印当前执行的IP,一旦发生异常可以快速定位主机。

猜你喜欢

转载自blog.csdn.net/finalkof1983/article/details/90736724
今日推荐