首页 > 其他分享 >第20章 轻松实现远程控制

第20章 轻松实现远程控制

时间:2023-02-04 16:00:59浏览次数:33  
标签:PS 20 计算机 轻松 PowerShell pssession 会话 远程

第20章 轻松实现远程控制

20.2 创建并使用可重用会话

  会话是一个在你的PowerShell副本与远程PowerShell副本之间的持久化连接。你可以通过New-PSSession这个Cmdlet创建一个新的会话,指定一个或多个计算机名称。如果需要,你还可以指定备用用户名称、端口以及身份验证机制等。结果是一个存在PowerShell内存中的会话对象。
PS C:\>new-pssession -computername server-r2,server17,dc5
  通过Get-pssession获取创建好的会话。
PS C:\> get-pssession
  虽然上面的方法可以奏效,但我们更倾向于创建Session后立刻将其存入变量。例如:
PS C:\>$iis_servers = new-pssession -comp web1,web2,web3 -credential WebAdmin
  请永远不要忘记这些会话会消耗资源。如果关闭Shell,那么这些会话也会随之关闭,但如果你不是频繁使用这些会话,那么即使你希望使用同一个Shell完成其他任务,手动关闭这些会话也是不错的主意。
  使用Remove-PSSession这个Cmdlet关闭会话。比如说,只关闭连接到IIS的会话,可以使用下面的命令。
PS C:\>$iis_servers | remove-pssession
  或者,如果希望关闭所有处于开启状态的会话,使用下面的命令。
PS C:\>get-pssession | remove-pssession
  一旦成功建立会话后,你该如何使用这些会话?在接下来的几小节中,我们假设你已经创建了名称为$sessions的变量,并至少包含两个会话。我们使用localhost和Server-R2(你应该指定为符合你具体环境的计算机名称)。使用localhost并不是一个语法糖:PowerShell会开启一个真正指向本机PowerShell副本的远程会话。

20.3 利用Enter-PSSession命令使用会话

  回忆第13章,Enter-PSSession命令是用于进入远程计算机一对一交互式Shell所用的命令。该命令的参数可以是一个会话对象,而不是具体的计算机名称。由于$sessions变量中包含两个会话对象,我们必须通过索引指定使用其中哪一个会话对象。
PS C:\>enter-pssession -session $sessions[0]
[server-r2]:PS C:\Users\Administrator\Document>
  即使你将会话对象存于变量中,这些会话依然被存于PowerShell的一个打开会话的主列表中。这意味着你可以通过Get-PSSession访问这些会话。
PS C:\>enter-pssession -session (get-pssession -computer server-r2)
  或者,下述语法也可以生效:
PS C:\>Get-PSSession -computername server-r2 | enter-pssession

20.4 利用Invoke-Command命令使用会话

  Invoke-Command展示了Session对象的价值,你习惯于用该命令将一个命令(或一个完整的脚本)并行在多个远程计算机上执行。我们已经将所有的会话存储在$session变量中,我们可以通过下面的命令将多个计算机作为目标。
PS C:\>invoke-command -command { get-wmiobject -class win32_process } -session $sessions
  Invoke-Command的-Session参数也可以通过括号命令提供,正如我们在之前章节对计算机名称所做的那样。举例来说,下面的语句会将命令发送给计算机名称以“loc”开头的已连接会话。
PS C:\>invoke-command -command { get-wmiobject -class win32_process } -session (get-pssession -comp loc*)

20.5 隐式远程控制:导入一个会话

  隐式远程控制是对我们来说最酷、最有用的功能之一——可能是在任何操作系统的命令行界面中迄今为止最酷、最有用的功能。但不幸的是,该功能并未记入PowerShell文档。所幸,我们在本文中对该功能进行了阐述。
  让我们通过一个示例来查看完整的过程。

PS C:\> $session = new-pssession -comp server-r2 #establishes connection
PS C:\> invoke-command -command
{ import-module activedirectory } -session $session  #载入远程控制模块
PS C:\>import-pssession -session $session -module activedirectory -prefix rem   #Impors remote commands

  下面是本示例的解释。
(1)首先,通过与一台装有活动目录模块的远程计算机建立一个会话。我们需要该计算机装有PowerShell v2或更新版本,我们必须启用该计算机的远程控制。
(2)我们告诉远程计算机导入其本地的活动目录模块。
(3)我们接下来告诉我们的计算机从远程会话中导入命令。
(4)PowerShell在本地计算机创建一个临时模块,用于代表远程命令。这些命令并不是被复制过来的;PowerShell为其创建了指向远程计算机的快捷方式。
  现在我们就可以运行活动目录模块的命令了,甚至是使用帮助命令。我们使用New-remADUser来代替New-ADUser,这是由于我们在命令的名词部分添加了前缀“rem”。该命令在我们关闭Shell或关闭与远程连接的会话之前一直存在。

20.6 使用断开会话

  PowerShell v3对远程控制引入了两项提升。
  首先,会话不再那么脆弱,意思是在网络闪断或其他传输中断的情况下,会话不会断开。
  在第3版中,你必须显式使用的一项功能:断开会话。比如你正在以用户Admin1(是Domain Admins组成员)的身份连接到名称为Computer1的计算机上,并创建一个连接到名称为COMPUTER2的连接。
PS C:\>New-PSSession -ComputerName COMPUTER2
  然后你就可以关闭连接。该操作仍然是在Computer1上进行的。当你完成操作后,它会将两台计算机之间的连接断开,但会在Computer2上保留一份PowerShell的副本。注意,你可以通过指定Session的ID号完成该操作,该ID号会在你第一次创建Session时显示。
PS C:\>Disconnection-PSSession -Id 4
  但最酷的地方在于,我们登录到另一台计算机,也就是COMPUTER3上,用同样的域帐号Admin1,并获取运行在COMPUTER2上的会话列表。
  我们花一些时间讨论和管理这些会话。在PowerShell的WSMAN:Drive,你可以发现大量帮助你管控已断开会话的设置。你还可以通过组策略对大多数配置进行中心化管理。需要寻找的关键设置如下。

  • -IdleTimeout 指定当远程PowerShell中没有用户活动时,远程Shell将保持打开状态的的最长时间。
  • -MaxConcurrentUsers 指定可以在同一计算机上通过远程Shell同时执行远程操作的最大用户数。
  • -MaxShellRunTime 指定会话可以打开的最长时间。
  • -MaxShellPerUser 指定任何用户可以在同一系统上远程打开的并发Shell的最大数目。

标签:PS,20,计算机,轻松,PowerShell,pssession,会话,远程
From: https://www.cnblogs.com/evan-whc/p/17091702.html

相关文章

  • 第13章 远程处理:一对一及一对多
    第13章远程处理:一对一及一对多13.1PowerShell远程处理的原理在一定程度上讲,PowerShell的远程处理类似于Telnet或者其他一些老旧的远程处理技术。当键入命令时,它会......
  • 美团一面:InndoDB 单表最多 2000W,为什么?小伙伴竟然面挂
    在疯狂创客圈的社群面试交流中,有很多小伙伴在面大厂,经常遇到下面的问题:问题1:在实际生产环境中,InnoDB中一棵B+树索引一般有多少层?问题2:在实际生产环境中,InnoDB一棵B......
  • 2023年 .NET Monorepo 来了
    Monorepo(monolithicrepository)是一种项目架构,简单来说就是,将多个项目或包文件放到一个git仓库来管理,很多前端项目vue3、element都是采用的这种架构模式。之所以应用mon......
  • 2023/2/4 考试总结
    树形数据结构专场也就是我的大型GG专场题单贴贴T1.P4587[FJOI2016]神秘数主席树/可持久化线段树;考试的时候怕调不出来,不是很敢写,然后还有性质分析得不是......
  • Andlua+实现WakeUpOnline远程开机
    一、最终效果远程开机app下载:下载链接:https://wwp.lanzoup.com/iDR330ml4l2b提取码:dxcg注意:使用前请按照2.1的步骤设置电脑“mac地址:填写自己的mac地址主机地址:......
  • 2023 二月 做题记录
    2.3P3119首先有显然结论:在一个环上反走一定是不值的,因为环上的点本来就相互可达。缩点后建立正反图跑最短路,设正图最短路数组为\(dis1\),反图最短路数组为\(dis2\),对于......
  • C++校园导游系统[2023-02-04]
    C++校园导游系统[2023-02-04]校园导游问题描述:用无向网表示校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径......
  • 2023牛客寒假算法基础集训营6
    2023牛客寒假算法基础集训营6AA直接判断#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintx;signedmain(){cin>>x;if(x<=7)......
  • 题解 G. Grammar Path 2020-2021 ICPC NERC (NEERC), North-Western Russia Regional
    传送门【大意】给定一个CNF和一个有向图。有向图上的每一条边都写上了一个字母。要求你从\(s\)到\(t\)走一条尽可能短的路,且将经过的字母写下来后,这个字符串能被......
  • windows 家庭版开启远程桌面的步骤
    1.检查是否开启远程桌面服务,如果有的话先关掉,方便进行接下来的操作。netstoptermservice2.开启远程桌面服务,控制面板-》系统安全-》允许应用通过防火墙-》更改设置-》......