none
[论坛FAQ] 如何使用Windows PowerShell Remote RRS feed

  • 常规讨论

  • 众所周知,Windows PowerShell 是一个非常强大的工具,我们可以通过它来很方便地管理Windows操作系统。随着在PowerShell 2.0以后出现的PowerShell Remoting技术,我们可以通过PowerShell脚本来远程管理多个操作系统。这样的话我们只要在本地执行远程脚本,然后脚本将在远程系统上执行,并且执行的结果会在本地显示。

    PowerShell Remoting 是基于WS-Management协议和WinRM服务的,在使用远程管理前,我们先要在远程机器上运行命令“Enable-PSRemoting -Force”来配置机器接受远程的命令。

    注意:在Server 2012及以后的版本,Powershell Remoting是默认开启的,所以这时你不需要手动运行命令“Enable-PSRemoting”

    如果在环境中有很多的机器需要Enable Pewershell Remoting,你可以使用GPO来批量进行:

    1. 将脚本“Enable-PSRemoting -Force”储存为.ps1的格式。
    2. 打开GPMC->User Configuration->Windows Settings->Scripts(logon)。(如图1

    1

    对于Powershell Remoting的一些基本知识可以参考以下官方文档:

    Enable and Use Remote Commands in Windows PowerShell

    http://technet.microsoft.com/en-us/magazine/ff700227.aspx

    about_Remote

    http://technet.microsoft.com/en-us/library/hh847900.aspx

    下面我们介绍一些Powershell Remoting的常用命令:

    Invoke-Command

    Enter-PSSession

    对于使用Powershell cmdlets,所有的命令都有官方的帮助文档,你可以运行Help命令打开在线文档:“help Enter-PSSession -Online”,里面有所有参数的说明和很好的实例。

    使用Invoke-Command

    EX:  Server1 远程管理Server2

    1. Server2Enable Remoting

    Server2上打开PowerShell ”Run as Administrator”,运行Enable-PSRemoting –Force

    1. Server1上运行远程命令管理Server2

    Invoke-Command -ComputerName server2 -Credential domain\username -ScriptBlock {get-process}

    这里的参数ComputerName输入远程机器名称。如果你当前打开Powershell的账号对Server2Admin权限,这里就不需要参数“Credential”,如果不是则需要提供server2管理账户的用户名和密码,参数“ScriptBlock”输入的是要在远程Server上执行的命令。

    2

    如果你是想在server2上执行一个在Server1储存的本地Powershell的脚本文件(.ps1),你可以参考以下的命令:

    Invoke-Command -ComputerName server2 -Credential domain\username -FilePath d:\powershellscript.ps1

    使用Enter-PSSession

    Enter-Pssession可以用来连接远程会话,你在远程会话里输入的所有命令都在远程机器上执行直到你关闭该远程会话,关闭远程会话可以运行“Exit-PSSession”。它和Invoke-command的步骤差不多,就是我们在这里使用命令“Enter-Pssession”,而不是“Invoke-Command”

    图3

    在非域环境中使用Powershell Remoting:

    在域内时我们可以很方便的通过Host Name来查找和验证远程机器,但有时我们需要连接一些Workgroup和域外的机器,我们可以通过对方的IP地址,这时我们需要在WinRM里配置“TrusteHosts”:

    1. Server2上运行Enable-PSRemoting –Force
    2. Server1上运行Enable-PSRemoting –Force,这是给当前用户权限去修改TrusrtedHosts的设置,不然会有类似“Set-Item : Access is denied.”的错误。

    然后将Server2IP地址加入TrustedHosts:

    Set-Item WSMan:\localhost\Client\TrustedHosts –Value ipaddressIPaddress也可以是通配符*,代表所有机器)

    以上命令可以帮助你在Server1上连接任意的远程机器,不局限于域内机器。

    以下机器不在同一域内:

    4

    如果你想删除TrustedHosts列表,可以参考一下下面的命令:

    clear-item wsman:\localhost\client\trustedhosts

    此外,你也可以参考下面的文章来获取更多的信息:

    about_Remote_FAQ

    http://technet.microsoft.com/zh-cn/library/dd315359.aspx

    about_Remote_Troubleshooting

    http://technet.microsoft.com/zh-cn/library/dd347642.aspx


    Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.

    2014年12月31日 6:46
    版主

全部回复