设为首页 收藏本站
查看: 1354|回复: 0

15. PowerShell -- 远程管理(1)

[复制链接]

尚未签到

发表于 2018-9-2 12:05:05 | 显示全部楼层 |阅读模式
  ·         PowerShell中的远程管理:通过远程管理计算机,通过WinRM (Windows Remote Management) 起作用,它是基于微软的WS-Management协议的。
  ·         PowerShell 2.0远程管理的条件,必须安装以下软件(默认在windows 7, 2008 R2上安装),并且能够在XP SP3, Server 2003 SP2,Vista,2008 SP1-SP3上安装;
  1. Windows PowerShell 2.0
  2. NET Framework 2.0 SP1以上
  3. Windows Remote Management (WinRM) 2.0
  ·         PowerShell脚本在远程计算机上执行的条件:
  1.       在远程主机上属于administrators组的成员;
  2.       执行远程相关命令时,能提供administrator 凭证,或具有PS线程配置信息的权限;
  3.       要求客户端是Windows vista, 7以上系统;
  ·         PowerShell中传统的远程命令:可以用来从远程计算机获取信息
  o   Get-WmiObject
  o   Invoke-WmiMethod
  o   Limit-EventLog
  o   Set-Service
  o   Set-WmiInstance
  o   Show-EventLog
  o   Stop-Computer
  o   Clear-EventLog
  o   Get-Counter
  o   New-EventLog
  o   Register-WmiEvent
  o   Remove-EventLog
  o   Remove-WmiObject
  o   Restart-Computer
  o   Get-EventLog
  o   Get-HotFix
  o   Get-Process
  o   Get-Service
  o   Get-WinEvent
  ·         PowerShell中新的远程命令:可以用来配置远程管理,并不都是直接用于执行远程命令;
  o   Enable-PSRemoting:用于配置计算机接受通过WS-Management技术发送的Windows PowerShell 远程命令。如果要启用PowerShell远程特性需首先且仅需执行这个cmdlet一遍。这个cmdlet会马上调用Set-WSManQuickConfig配置WinRM服务,为WS Management启用防火墙的例外,最后启用所有已注册的PowerShell配置。
  o   Disable-Command:用于禁用当前计算机所有的PowerShell线程配置,使计算机接受任何从远程主机发送的命令。在禁用PowerShell的远程管理后,不再希望WinRM服务自启动,则需要手动停止该服务。
  o   Invoke-Command:用于在本地或远程主机上执行命令并返回命令的输出,包括错误。用单独的Invoke-Command命令,可以在多台主机上运行命令。这个cmdlet默认情况下会在远程计算机开启线程用于运行命令,当执行完毕命令则将其关闭。这种方式块可能会比较换慢慢需要在特定的预定义线程信息下执行。
  o   New-PSSession:能用于在远程计算机中创建持久连接。通过创建持久线程,用户可以分享数据,如在相同PSSession中的不同命令间共享函数或者变量值。
  o   Enter-PSSession:能和单独的远程主机启动交互式线程。在线程存活期间,用户向远程主机键入的命令,就如同直接在远程主机上执行。在同一时间只能启动一个交互式线程,用户能通过此cmdlet指定由New-PSSession cmdlet创建的PSSession。
  o   Exit-PSSession:将退出由Enter-PSSession cmdlet创建的互交式的PS线程。
  o   Get-PSSession:获取在当前线程中创建的Windows PowerShell线程(PSSession),当没有参数指定的情况下,这个cmdlet获取所有的PSSession并返回所有的PSSession到一个变量,用户能在其他类似于Invoke-Command,Enter-PSSession,Remove-PSSession等cmdlet中使用这些线程信息。
  o   Remove-PSSession:用于关闭PS线程,将会停止任何在PSSession中运行的命令,结束PSSession,并释放所有PSSession占用的资源。如果PSSesion正在连接到远程计算机,Remove-PSSession将会关闭本地到远程计算机的连接。
  o   Import-PSSession:使用PowrShell 2.0隐含的远程特性。隐含的远程特性允许用户从本地/远程将命令导入到现存的PS线程中,如果是在本地线程中则直接运行命令。
  o   Export-PSSession:用于从本机或远程计算机的其他PSSession中获取cmdlet,函数,别名以及其他命令格式,并将其作为Windows PowerShell模块存储到本地硬盘。用户能用Import-Module cmdlet从存储的模块获取命令并添加到PS线程中。
  o   Register-PSSessionConfiguration :在本地计算机中创建和注册新的线程配置信息。
  o   Unregister-PSSessionConguration :用于删除在计算机注册线程的配置信息。
  o   Disable-PSSessionConfiguration : 用于将注册的PS线程配置信息置成失效。这里需要强调的是此操作只将配置信息设置为失效,并未从本机反注册或删除信息,这样将会使线程配置信息不能被用于创建远程线程。
  o   Enable-PSSessionConfiguration: 用于将通过Disable-PSSessionConfiguration置为失效的线程配置信息重新生效。
  o   Get-PSSessionConfiguration: 用于获取已在本地计算机上注册的线程配置信息。
  o   Set-PSSessionConfiguration:用于更改已在本地计算机注册的线程配置信息的属性。
  o   Test-WSMan cmdlet:快速检查是否能从其他计算机创建远程线程。如果WinRM没有在远程主机上启用,用户能安全的确认PowerShell远程管理没有被启用。然而,却不能只通过检查WinRM服务是否运行来确认PowerShell远程管理是否被启用,因为这个cmdlet是通过检查WinRM服务和远程管理所需的许多功能组件是否齐备来判断的。
  o   Enable-WSManCredSSP  :PowerShell远程管理支持CredSSP认证并且可以通过Enable-WSManCredSSP cmdlet启用。
  o   Disable-WSManCredSSP:用于在客户端或服务器禁用CredSSP认证。
  ·         PowerSheel中执行远程操作
  配置好远程基础结构,就可以执行远程操作了。远程操作主要依赖几个Session(会话)命令和Invoke-Command命令来进行。常见的使用情况有三种场景:
  o   场景一:远程交互式会话
  这个场景一般用于手动进行远程操作,输入命令,查看结果。方法很简单。进入交互式会话的命令是Enter-PSSession,退出时键入Exit-PSSession或者exit都可以。远程交互式操作期间,输入的命令在远程计算机上运行,就像直接在远程计算机上输入并执行这些命令一样。期间所定义的变量和命令的执行结果在退出交互式会话之后不再可用。
  o    场景二:脚本块、脚本文件的一次性执行
  这种场景,是在本地计算机与远程计算机上建立一个临时会话。将脚本块或者脚本文件的内容发送到远程计算机执行,并将结果发回本地计算机。这种方法执行效率很高,是PowerShell推荐的执行远程命令的方法。除非需要在会话中共享数据,否则建议使用该方法。
  o   场景三:脚本块、脚本文件在命名会话中执行
  这种场景是最复杂的,也是功能最强大的。会话会保持所有定义的变量、函数和脚本,导入的模块和管理单元,有利于共享数据。使用方法如下:
  1、定义会话:请使用new-pssession命令定义会话,如$session1 = new-pssession –computer server1。(如果必要请使用Credential参数。)
  2、在会话中远程执行脚本(或者脚本文件): 请使用Invoke-Command命令执行远程脚本,如Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1
  3、获得结果:可以将执行结果赋于变量,如$sub = Invoke-Command -Session $session1 -ScriptBlock {dir c:\}或者$sub = Invoke-Command -Session $session1 -FilePath .\dirDriveC.ps1
  ·         PowerSheel中执行远程操作实例
  我的工作PC叫Server,要点检的服务器就叫Client,无论是Server还是Client都要开启Windows Remote Management (WS-Management)服务。
  1.       在Client上打开PowerShell,执行Enable-PSRemoting –Force,接着按提示输入Y回车,系统会自动配置相关功能。
  2.  在Server上打开PowerShell,执行cd WSMan::localhost\client,这是切到远程管理的client目录下。
  (因为我在工作组模式下,如果是域环境就不需要了,远程连接时自动套用当前用户来认证。)
  然后执行Get-ChildItem,看一下有什么子项。执行Set-Item ./TrustedHosts 192.168.1.111,把Client的IP加到时Server上受信主机里去。192.168.1.111是我其中一台DB服务器,
  要加多台的话,用逗号分隔IP:
  Set-Item ./TrustedHosts ‘192.168.1.110,192.168.1.111,192.168.1.112’。
  3.   到这里远程管理的配置就完成了。测试一下,在Server上执行:
  $C=Get-Credential –Credential Administrator;Enter-PSSession –ComputerName 192.168.1.110 –Credential $C
  弹出一个框要求输入当前要连接服务器的用户名和密码,我这里用的是管理员。
  参考:
  http://tech.ccidnet.com/art/302/20100701/2102213_1.html
  http://www.cnblogs.com/ceachy/archive/2013/02/20/PowerShell_Remoting.html
  http://www.cnblogs.com/Joe-T/archive/2011/11/14/2248384.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561538-1-1.html 上篇帖子: powershell switch和正则表达式 下篇帖子: 18. PowerShell -- Start-Job, Get-Job, Remove-Job 等
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表