[玩转系统] 使用 PowerShell Invoke-Command 在远程计算机上运行脚本
作者:精品下载站 日期:2024-12-14 22:59:30 浏览:14 分类:玩电脑
使用 PowerShell Invoke-Command 在远程计算机上运行脚本
在本文中,我们将学习如何使用 Invoke-Command cmdlet 远程运行 PowerShell 命令或脚本。您可以使用 PowerShell 在网络中的一台或多台计算机上远程运行命令。 Invoke-Command cmdlet 使用 PowerShell Remoting 的远程管理功能。 PowerShell 远程处理允许您通过 WinRM(Windows 远程管理)服务和Web 管理服务(WS-Management)协议远程连接到计算机上的 PowerShell 会话。此服务提供建立远程 PowerShell 会话并运行代码的能力。
为 PowerShell 远程处理配置 WinRM
PowerShell Remoting 使用 HTTP(端口 TCP/5985)或 HTTPS(端口 TCP/5986)在计算机之间进行通信。默认情况下,使用 HTTP 协议,但即使此流量也是使用 AES-56 加密的(但是,存在中间人类型攻击的威胁)。也可以使用 Kerberos 或 NTLM 身份验证。
WinRM 必须在要连接的远程计算机上运行。检查WinRM服务状态:
Get-Service -Name "*WinRM*" | fl
如果服务没有运行,启动它:
Enable-PSRemoting
WinRM has been updated to receive requests.
WinRM service started.
WinRM is already set up for remote management on this computer.
此命令将启动 WinRM 服务(并将其设置为自动启动)、设置默认 winrm 设置并向 Windows 防火墙添加例外规则。这
Enable-PSRemoting -Force
命令启用 WinRM,而不提示用户。
然后,您可以使用 PowerShell Remoting 远程连接到计算机。
请注意,如果您的网络类型设置为公共,则默认情况下 PowerShell 远程处理将无法工作。然后该命令返回以下错误:
Set-WSManQuickConfig : ... WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again.
您必须将网络位置更改为专用或使用以下命令:
Enable-PSRemoting -SkipNetworkProfileCheck.
还启用允许在公共网络中访问 WinRM 的 Windows Defender 防火墙规则。您可以使用 GPO 或 PowerShell 启用防火墙规则:
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
要通过 PowerShell Remoting 测试与远程计算机的连接,请运行以下命令:
Test-WsMan compname1
如果您没有 Active Directory 域或者通过 IP 地址通过 PowerShell Remoting 访问计算机,则在这种情况下将使用 NTLM 协议进行身份验证。使用 NTLM 时,如果尝试运行 Invoke-Command,则会出现以下错误:
[192.168.1.201] Connecting to remote server 192.168.1.102 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: thetransport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. + FullyQualifiedErrorId: CannotUseIPAddress,PSSessionStateBroken
要使 NTLM 身份验证在您用于连接的计算机上正常工作,请执行更多操作:为 WinRM 颁发 SSL 证书或将主机名/IP 地址添加到受信任的主机列表:
Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.1.201
或者您可以允许连接到所有计算机(不推荐,因为这是 NTLM 的缺点之一 - 它不支持相互身份验证)。
Set-Item wsman:\localhost\Client\TrustedHosts -value *
必须在远程主机上应用相同的设置。
要显示受信任主机的列表,请运行以下命令:
Get-Item WSMan:\localhost\Client\TrustedHosts
要应用更改,请重新启动 WinRM:
Restart-Service WinRM
您还可以使用组策略启用和配置 WinRM。
如何使用 Invoke-Command 远程运行 PowerShell 命令?
Invoke-Command cmdlet 允许在一台或多台远程计算机上运行命令。
例如,要在远程计算机上运行单个命令,请使用以下命令:
Invoke-Command -ComputerName dc01 -ScriptBlock {$PSVersionTable.PSVersion}
此命令将显示远程计算机上安装的 PowerShell 版本,其名称在
-ComputerName
范围。在远程计算机上输入要运行的命令
-ScriptBlock {[cmdlet]}
堵塞。
默认情况下,通过 Invoke-Command 发送的命令将以远程计算机上的当前用户身份执行。如果您想以其他用户身份运行它,请请求用户凭据并将其保存到变量中:
$cred = Get-Credential
Invoke-Command -ComputerName dc01 -Credential $cred -ScriptBlock {Get-NetAdapter}
此 PowerShell 命令显示远程计算机上的网络接口列表:
您可以在 ScriptBlock 中输入多个命令,以分号分隔。例如,以下命令将显示当前时区并将其更改为另一时区:
Invoke-Command -Computername dc01 -ScriptBlock {Get-TimeZone| select DisplayName;Set-TimeZone -Name "Central Europe Standard Time”}
Invoke-Command 不仅允许您运行单个命令,还允许您运行 PowerShell 脚本。为此,使用 -FilePath 参数(而不是 -ScriptBlock)。在这种情况下,您指定计算机上本地 PS1 脚本文件的路径(不需要将脚本文件复制到目标远程计算机):
Invoke-Command -ComputerName DC01 -FilePath C:\PS\Scripts\CheckSMBversion.ps1
如何使用Invoke-Command在多台计算机上同时运行命令?
您可以使用 Invoke-Command 在多台远程计算机上并行(同时)运行命令。
在最简单的情况下,运行 PowerShell 命令的计算机的名称用逗号分隔:
Invoke-Command server1, server2, server3 -ScriptBlock {get-date}
您可以将计算机列表放入变量(数组)中:
$servers = @("server1","server2","server3")
Invoke-Command -ScriptBlock { get-date} -ComputerName $servers
或者从文本文件中获取:
Invoke-Command -ScriptBlock {Restart-Service spooler} -ComputerName(Get-Content c:\ps\servers.txt)
您还可以使用 PowerShell 模块的 AD 中的 Get-ADComputer cmdlet 获取 AD 中的计算机列表:
要在域中的所有 Windows Server 主机中运行命令,请使用以下 PowerShell 代码:
$computers = (Get-ADComputer -Filter 'OperatingSystem -like "*Windows server*" -and Enabled -eq "true"').Name
Invoke-Command -ComputerName $computers -ScriptBlock {Get-Date} -ErrorAction SilentlyContinue
如果计算机关闭或不可用,脚本不会因 SilentlyContinue 参数而停止,并将继续在其他计算机上运行。
要了解结果来自哪台计算机,请使用 PSComputerNamee 环境变量。
$results = Invoke-Command server1, server2, server3 -ScriptBlock {get-date}
$results | Select-Object PSComputerName, DateTime
当在多台计算机上使用 Invoke-Command 运行命令时,该命令会同时运行。 Invoke-Command 对同时管理的最大计算机数量有限制(同时 PSSession 的数量有限)。此限制在 ThrottleLimit 参数中设置(默认值为 32)。如果要在超过 32 台计算机(例如 128 台)上运行命令,请使用
-ThrottleLimit 128
(但是,您的计算机将有更高的负载来建立大量 PSSession)。
要在后台通过 Invoke-Command 在远程计算机上运行命令,需要一个特殊属性
-AsJob
用来。那么命令的结果不会返回到控制台。要获取结果,请使用 Receive-Job cmdlet。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag