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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在远程服务器上运行PowerShell命令相关的知识,希望对你有一定的参考价值。

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传输,并且必须指定远程系统是受信任的主机。
参考技术A PowerShell概念 即开发代号为Monad的命令行外壳和脚本系统管理工具。powershell PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离. PowerShell的前身命名为Monad, 在2006年4月25日正式发布beta版时更名为PowerShell. PowerShell是一款基于对象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能够运行在Windows XP SP2, Windows Vista, Windows 7,Windows 2003操作系统上. 能够同时支持WMI, COM, ADO.NET, ADSI等已有的Windows管理模型. 根据微软公司的计划, 2009年将会实现所有微软公司的GUI管理工具通过PowerShell作为中间层对服务程序进行管理, 现阶段例如Exchange 2007等已经支持PowerShell的管理. 可以预期, 使用PowerShell管理Windows服务器指日可待. 目前PowerShell Version 2.0 正在紧锣密鼓的开发中, 最近首席架构师接受了媒体采访, 介绍了关于远程管理等新特性. 这项全新的技术提供了丰富的控制与自动化的系统管理能力;而“脚本语言”(scripting languages)则是用来编写程序的计算机语言。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让写程序的人(开发者)快速完成程序的编写工作。 Windows PowerShell 是微软公司为 Windows 环境所开发的壳程式(shell)及脚本语言技术,采用的是命令行界面。这项全新的技术提供了丰富的控制与自动化的系统管理能力。 之前的专桉代号是 Monad,程式另一个名称叫 Microsoft Shell(MSH) 起源与目的 UNIX 系统一直有着功能强大的脚本(shell),Windows PowerShell 的诞生就是要提供功能相当于 UNIX 系统 BASH 的命令列壳程式,同时也内建脚本语言以及辅助脚本程式的工具。 程式特性 一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。 脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。 内含129种称为 cmdlet 的标准工具,可用来处理常见的系统管理工作。 具备完整的扩充功能,独立软体商或开发者都能很容易的自行扩充。 cmdlet 是 Windows PowerShell 的指令,发音念法为 command-let。这相当于 DOS 或其他壳程式的内建指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如线上查询说明的 cmdlet 指令为 get-help,名称的动词部分大致有 get、set、add、remove 等等(字母都不分大小写)。 技术基础 Windows PowerShell 是以 .NET Framework 技术为基础,并且与现有的 WSH 保持回溯相容,因此它的脚本程式不仅能存取 .NET CLR,也能使用现有的 COM 技术。同时也包含了数种系统管理工具、简易且一致的语法,提升管理者处理,常见如登录资料库、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等伺服器软体都将内建 Windows PowerShell。

WMI如何远程执行命令?

【中文标题】WMI如何远程执行命令?【英文标题】:How WMI can execute command remotely? 【发布时间】:2012-10-12 12:23:01 【问题描述】:

我想在服务器上完成组策略后立即远程执行 gpupdate,有什么方法可以在远程 pc 上批量运行命令“gpupdate /force”?我已经使用powershell来完成,但是应该在远程PC上运行“Enable-PSRemoting”并选择所有项目来创建监听器。所以我想找到有什么方法可以远程运行命令吗?谢谢

【问题讨论】:

【参考方案1】:

您可以使用 WMI 或 psexec 来运行命令,但请记住,用户部分将为执行命令的用户运行,而不是为登录用户运行。如果你需要它,它会变得复杂。在这里,您可以编写一个模拟登录用户的程序,并通过 psexec 使用 -s swith 启动该程序,该命令将作为系统执行命令。系统默认具有模拟权限。

【讨论】:

以上是关于如何在远程服务器上运行PowerShell命令的主要内容,如果未能解决你的问题,请参考以下文章

WMI如何远程执行命令?

如何使用powershell远程连接服务器

如何使用Powershell远程管理Linux服务器

如何使用PowerShell remoting运行远程命令

Windows域控管理—如何使用powershell远程连接服务器

Powershell在远程计算机上使用命令行参数执行远程exe