如何在远程服务器上运行PowerShell命令

日期: 2015-08-25 作者:Brien Posey翻译:黄小明 来源:TechTarget中国 英文

PowerShell在用户管理和维护Windows方面是一个强大的命令行环境。虽然PowerShell是一个本地管理工具,但是它也用于管理远程服务器。事实上,管理员可以针对大量的服务器创建PowerShell脚本来执行管理任务。Invoke-Command和New-PSSession都是在远程服务器中PowerShell的执行命令。

Invoke-Command 如果你只需要针对单台或者多台远程服务器执行一个命令(或者一系列的管道命令),那么最便利的方法就是使用Invoke-Command命令。Microsoft的文档列出了绝大多数的参数和语法,导致人人皆知Invoke-Command命令的复……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

PowerShell在用户管理和维护Windows方面是一个强大的命令行环境。虽然PowerShell是一个本地管理工具,但是它也用于管理远程服务器。事实上,管理员可以针对大量的服务器创建PowerShell脚本来执行管理任务。Invoke-Command和New-PSSession都是在远程服务器中PowerShell的执行命令。

Invoke-Command

如果你只需要针对单台或者多台远程服务器执行一个命令(或者一系列的管道命令),那么最便利的方法就是使用Invoke-Command命令。Microsoft的文档列出了绝大多数的参数和语法,导致人人皆知Invoke-Command命令的复杂性。即使如此,使用Invoke-Command在远程系统上执行命令仍然出奇地容易。

对于基本的远程命令执行,你只需要提供远程计算机的名称和想要执行的代码块。假设你想要在名称为Production1的远程服务器上执行Get-VM命令,你可以使用下面的命令:

Invoke-Command –ComputerName Production1 {Get-VM}

虽然这看起来很简单,但是你也要对使用这个方法了解以下几点。

首先,Invoke-Command命令不限制你在一个远程系统上执行命令,你可以在多个计算机上指定命令,你需要做的就是使用命令区分开这些计算机的名称。例如,在Production1,Production2和Production3计算机上执行命令如下:

Invoke-Command –ComputerName Production1, Production2, Production3 {Get-VM}

第二点,你必须要知道虽然这个方式的设计目的只是简单地在单个远程系统上运行的单一命令,但是你也可以运行多个命令。如果查看之前的几行代码,你会注意到允许在远程计算机上运行的Get-VM命令是包含在花括号里面的。任何在花括号里面的命令都会在指定的远程计算机行运行。同样的,只要所有的命令都包含在花括号里面,你可以使用管道符号把命令把它们链接在一起。

第三点你必须知道上面的语法只有在所有计算机中使用了Kerberos认证才会运行,同时包括有命令输入和已经加入了域。否则,你必须使用HTTPS传输,并且必须指定远程系统是受信任的主机。

New-PSSession

New-PSSession通常用于在远程系统上执行命令。Invoke-Command命令设计于用于在远程系统上执行单一命令(或者一连串的命令),而New-PSSession实际上是用于在远程服务器上重定向PowerShell。实质上,你输入的任何命令都会自动发送到远程机器上运行。

例如Invoke-Command命令,这里有许多不同的New-PSSession命令变量,你可以从Microsoft官网文档中寻找这些变量。

这个命令如此简易,它只要求提供远程计算机的名称。例如,如果你想和名为Production1的计算机建立一个会话,你可以使用以下命令:

New-PSSession –ComputerName Production1

这个命令会与指定的计算机建立会话,但是它不会自动重定向任何你在远程计算机输入的执行PowerShell命令;原因是Microsoft并不限制你只使用一个远程会话。你可能需要和多个不同的服务器建立回话。因此,输入上述命令建立一个会话,PowerShell会提供确认的会话,也会罗列出一个会话ID号,但仅此而已。

如果你想要使用远程会话,那么你将不得不使用另一个名为 Enter-PSSession的PowerShell命令,只是简单地附件上你想连接到会话ID号即可。例如,如果有一个连接到Production1,且会话ID为列名1的New-PSSession会话,你就可以输入一下命令来连接这个会话:

Enter-PSSession 1

当你在使用这个命令时,PowerShell会提示你为这个远程程系统更改一个相关的名称,这样你就可以很轻松地跟踪你正在发送命令的系统了。

再一次的,你需要确保使用了Kerberos认证,并且所有的系统都已经加入了域。否则,想要建立远程会话,你需要多加几个额外的步骤。

正如你所见到的,PowerShell让远程服务器上的命令执行更加容易,尤其是当你所有的服务器和工作站属于同一个域时。

相关推荐

  • PowerShell管道应用示例

    管理人员可以创建一些功能来支持PowerShell管道的运行,而通过脚本将目标对象传递到整个管道中,同样也可以提升基于文本的Shell质量。

  • 如何对Windows Server文件拷贝排错

    Server Message Block文件共享已经存在了很长一段时间,一般来说是稳定和可靠的。但是一些管理员发现如果从Windows 7或Windows 8客户端向Windows Server文件共享传输大文件的时候会出现一些古怪的问题。

  • Windows管理员如何学习组策略基础知识

    组策略自出现以来并没有太多改变,但对于初学者来说却是一堵难以翻越的城墙。本文介绍如何学习使用组策略来管理用户和计算机。

  • 技巧:使用PowerShell FTP脚本上传和下载文件

    系统管理员有时需要将文件从A点传到B点,比较流行的做法是使用PowerShell FTP脚本,这样管理员可以使用Windows的.NET功能。