PowerShell入门教程之远程操作运行PowerShell的方法_PowerShell

PowerShell远程操作是远程管理的基础,它为集中管理分布式系统提供了又一种可靠、高效的方法。

  一般来说PowerShell远程操作依赖于远程处理基础结构,但为数不多的几个自身具有远程处理能力的命令除外,如Get-Service、Get-Process、Get-WMIObject、Get-EventLog和Get-WinEvent等。(不难看出,这些命令都是“读取”系统的某些方面的信息,不做更改。它们依赖.Net Framework完成远程操作。)

配置远程基础结构

  远程基础结构是远程操作的基础,正确设置远程基础结构才能使远程命令正确执行。好在远程基础结构虽然重要,但是配置起来非常简单。实际上,只要设置好以下两点就可以进行远程操作了:

  1、以管理员身份运行。要进行远程操作,必须以管理员身份启动PowerShell命令行,即使当前用户是系统管理员也要如此。

  2、启用远程处理模式。启用远程处理模式之后,依赖远程基础结构的命令才能正确执行。启用远程处理模式请使用enable-psremoting命令。有的系统默认已经开启了远程处理模式,检查远程处理模式是否启动,可以执行new-pssession命令。如果新的会话成功创建,则说明远程模式启动,远程基础结构配置成功。

执行远程操作

  配置好远程基础结构,就可以执行远程操作了。远程操作主要依赖几个Session(会话)命令和Invoke-Command命令来进行。常见的使用情况有三种场景:

  场景一:远程交互式会话

  这个场景一般用于手动进行远程操作,输入命令,查看结果。方法很简单。进入交互式会话的命令是Enter-PSSession,退出时键入Exit-PSSession或者exit都可以。远程交互式操作期间,输入的命令在远程计算机上运行,就像直接在远程计算机上输入并执行这些命令一样。期间所定义的变量和命令的执行结果在退出交互式会话之后不再可用。

  场景二:脚本块、脚本文件的一次性执行

  这种场景,是在本地计算机与远程计算机上建立一个临时会话。将脚本块或者脚本文件的内容发送到远程计算机执行,并将结果发回本地计算机。这种方法执行效率很高,是PowerShell推荐的执行远程命令的方法。除非需要在会话中共享数据,否则建议使用该方法。

  场景三:脚本块、脚本文件在命名会话中执行

  这种场景是最复杂的,也是功能最强大的。会话会保持所有定义的变量、函数和脚本,导入的模块和管理单元,有利于共享数据。使用方法如下:

  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

  后续命令可参照步骤2或者3继续执行,所有执行的命令就好像在同一个上下文中执行一样。

结语

  网络时代的Shell或者脚本语言必须具有很强的网络处理能力,PowerShell就是这样的语言。微软的产品一般来说将安全性看得很重,所以PowerShell在网络处理方面有诸多限制。比如PowerShell不能在远程机器上显示界面,即使是有界面的程序,也只能在后台运行。熊掌和鱼肉不可兼得,好在我们总能找到一些解决办法。比如上述问题可以借助微软的PsExec工具来实现,详细信息见Windows Sysinternals.

时间: 2024-07-29 19:51:18

PowerShell入门教程之远程操作运行PowerShell的方法_PowerShell的相关文章

PowerShell入门教程之编写和使用脚本模块实例_PowerShell

现在通过编写模块就可以在PowerShell命令行或者脚本中管理大型.分布式软件系统,就像Exchange Server和SharePoint Server正在做的那样.你有这样的需求吗? 模块.脚本模块 模块是PowerShell V2中引入的概念,用以改进之前提出的"管理单元".将管理单元也作为模块(二进制模块)处理之后,PowerShell中就包括两种模块--脚本模块和二进制模块.那么什么是模块呢?模块就是包含一些PowerShell命令.项的程序包,它以一个整体被分发共享和加载

PowerShell入门教程之函数、脚本、作用域介绍_PowerShell

脚本所体现的是PowerShell的编程特性,是任务自动化的基础.函数是比脚本粒度更细的代码复用单元,可以定义在命令行中或者脚本中.作用域就是变量和函数的作用范围,是执行上下文的划分. 函数 函数就是命名的命令列表,与一般编程语言中的函数概念具有相同的范畴.函数中不但可以有简单命令,还可以有控制流程的命令,如if.while.switch等.函数可以有匿名参数或者命名参数列表.命令参数列表可以用大括号或者Param关键字定义.匿名函数可以使用$Args变量来访问.函数也可接收来自管道的对象作为输

PowerShell入门教程之创建和使用配置文件实例_PowerShell

在命令行中定义别名.变量和函数,只是将它们添加在当前PowerShell的会话中.退出会话后,这些更改就会丢失.想要在以后的会话中也能使用它们,就要将它们定义在配置文件中. 配置文件 PowerShell的配置文件,不像Windows操作系统中那样使用.ini文件,也不像多数应用程序那样使用XML文件.PowerShell的配置文件都是些普通的PowerShell脚本文件.需要注意的是,这些配置文件的文件名是固定.不能更改的.并且它们受到脚本执行策略的约束,就是说在默认情况下,也就是脚本执行策略

PowerShell入门教程之快速学习PowerShell的几个方法_PowerShell

如何快速地掌握PowerShell呢?总的来说,就是要尽可能多的使用它,就像那句谚语说的:Practice makes perfect.当然这里还有一些原则和方法让我们可以遵循. 有效利用交互式环境 一般来说,PowerShell有两个主要的运行环境:PowerShell和PowerShell ISE.前者是PowerShell的运行环境,后者是PowerShell集成脚本环境,也就是编写脚本(.ps1)的地方.当然,你也可以使用记事本或者其他编辑器来编写脚本.对于初学者来说,一上来就写脚本绝对

PowerShell入门教程之Cmd命令与PowerShell命令相互调用的方法_PowerShell

     单独使用一种脚本来完成一项任务是理想的状态,而现实的情况往往是,因为历史原因.或者团队组成,你不得不将多种脚本或者程序组合在一起,来完成某项任务.本文的讨论范围是Cmd命令与PowerShell命令之间的组合与调用.      毋庸置疑,Cmd命令与PowerShell命令之间的调用有两个方向.即在Cmd命令中调用PowerShell的命令,以及在PowerShell脚本中调用Cmd命令.需要说明的是,这里的调用分两个层次:一.简单的在其中一个的环境中执行另外一个命令,完成部分工作:二

PowerShell入门教程之高效使用PowerShell交互式运行环境的几个小技巧_PowerShell

在开始关于脚本.对象和远程处理等复杂的功能之前,一直想再写一篇关于交互式运行环境的文章.因为我觉得这很重要,但是有什么是不重要呢?:)所以,说到底可能是个人喜好吧,我就是特别喜欢这种立等可取的交互方式. 如何高效地使用PowerShell的交互式运行环境呢?所谓"高效",既跟使用这个工具的熟练程度有关,也跟使用这个工具的习惯有关.习惯有无意中养成的,也有主动养成的.如果你恰好玩PowerShell不久,那么就从现在开始主动养成一些好习惯吧. 多用Tab键 在运行环境中,Tab键有补全内

PowerShell入门教程之访问.Net程序集、COM和WMI实例_PowerShell

PowerShell可以设计的大而全,重新实现一切:也可以像现在一样设计成胶水语言,利用现有的资源.特别是,与.Net.COM和WMI三大豪门的联姻,使得PowerShell必将在Windows世界里大放光彩. 与新锐.Net联姻 在Windows的世界里,.Net代表着现在和将来,是新生力量.与.Net联姻,就意味着榜上了粗腿,迈上了快车道.号称基于.Net Framework,那么使用.Net的基类就易如反掌.基本步骤如下:1.添加类所在程序集:2.创建类的实例:3.调用实例的函数或者属性.

AngularJS入门教程之模块化操作用法示例_AngularJS

本文实例讲述了AngularJS模块化操作用法.分享给大家供大家参考,具体如下: 在前面几节教程中,代码比较少,为了方便说明问题笔者將控制器代码都写在了HTML页面中,实际上这并不是什么好的编程习惯,而且可维护性差.通常的做法都是將处理业务逻辑的代码写在一个单独的JS文件中,然后在HTML页面中引入该文件. 然而这样会带来新的问题,我们的控制器全都定义在全局的命名空间中,假设我们有一个公共的JS文件,在登录页面和密码修改页面都引入这个JS,A开发人员和B开发人员英雄所见略同,对控制器的命名都是U

php入门教程数组的操作教程

什么是数组? 在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量. 无需很多相似的变量,你可以把数据作为元素存储在数组中. 数组中的元素都有自己的 ID,因此可以方便地访问它们. 有三种数组类型: 数值数组 带有数字 ID 键的数组 关联数组 数组中的每个 ID 键关联一个值 多维数组 包含一个或多个数组的数组 数值数组 数值数组存储的每个元素都带有一个数字 ID 键. 可以使用不同的方法来创建数值数组: 例子 1 在这个例子中,会自动分配 ID 键: $names = ar