使用powershell对Windows统一管控
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用powershell对Windows统一管控相关的知识,希望对你有一定的参考价值。
开启winrm服务允许被管控
winrm服务即Windows远程管理(Windows Remote Manager),是微软官方提供的不用通过页面,而是基于命令远程管控其他Windows机器的方法,包括ansible远程管控Windows也是基于winrm协议的。因此任何一台Windows服务器都自带了winrm服务,通过一定设置可以实现Windows被远程管控。下面是具体设置方法:
首先,winrm使用端口为5985,需要在防火墙设置允许5985端口来源,或者关闭防火墙。
另外,使用命令开启winrm服务,可以用cmd
call WinRM quickconfig -q
call winrm set winrm/config/service/auth @Basic="true"
call winrm set winrm/config/service @AllowUnencrypted="true"
call winrm set winrm/config/winrs @MaxMemoryPerShellMB="1024"
call winrm set winrm/config/winrs @MaxShellsPerUser="100"
call net stop winrm
call net start winrm
也可以通过powershell开启
enable-psremoting
验证是否打开,执行
winrm enumerate winrm/config/listener
出现如下代表已成功开启
另外,如果管理服务器是一台windows,则需要在管理服务器执行如下命令,代表它可以去管控别的服务器
call winrm set winrm/config/client @TrustedHosts="*"
单台后台管控
有两种方式,第一种是进入到被管控机器的powershell命令行,类似于ssh过去,使用Enter-PSSession命令,使用方式为
Enter-PSSession -ComputerName IP或servername -Credential username,这样进去之后,就相当于在被管控的机器上执行命令了,使用exit命令退出
第二种方式是,将命令直接传送到被管控机器执行,并返回执行结果,使用invoke-command命令,使用方式为
Invoke-Command -ComputerName IP或servername -Credential username -ScriptBlock 执行的命令,这样会将远程被管控的机器,本地执行结果返回过来
批量后台管控
批量后台管控多台服务器,是基于前面的Invoke-Command,把每台管控的Invoke-Command命令做成子job的形式,然后再返回job的执行结果,基本命令形式如下
$job = Invoke-Command -ComputerName server1,server2,server3 -Credential $cred -AsJob
然后通过查看作业状态和返回结果方式,查看命令执行的返回
(Get-Job $job.name).ChildJobs|get-job |select location,state,output
以上是关于使用powershell对Windows统一管控的主要内容,如果未能解决你的问题,请参考以下文章