[玩转系统] 远程 PowerShell 深入入门指南
作者:精品下载站 日期:2024-12-14 13:11:09 浏览:15 分类:玩电脑
远程 PowerShell 深入入门指南
您是否曾经想在舒适的工作站上在远程计算机上运行 PowerShell 命令?那么,使用 PowerShell 远程处理就可以做到。使用远程 PowerShell,您可以以可持续的方式在多个远程系统上运行命令和脚本。
听起来不错?继续阅读以了解如何通过 PowerShell 方式驯服这些远程计算机。
先决条件
本教程将是一个实践演示。如果您想继续操作,请确保您至少有三台装有 PowerShell 7 的计算机。其中一台是您的管理计算机,另外两台是远程计算机。
本教程将使用以下计算机。
- 安装了 PowerShell 7 的 Windows 10 PC 作为管理计算机。您将从这台机器启动远程命令。
安装了 PowerShell 7 的 Windows 10 电脑。该计算机将成为通过 WinRM 的远程 PowerShell 的端点。
- 远程 Windows 计算机上具有本地管理员权限的用户帐户。本教程使用名为 ma 的用户帐户。
-
启用 SSHD 的 Linux 计算机可通过 SSH 作为远程 PowerShell 端点。本教程使用 Fedora 35。
- 用于在 Linux 计算机上执行远程命令的用户帐户。该帐户应具有 sudo 和 SSH 访问权限。本教程使用名为test的帐户。如果您的 Linux 计算机上没有用户帐户,请在此时创建一个用户帐户
通过 WinRM 在 Windows 上启用远程 PowerShell
当您安装 PowerShell 7 时,有一个启用 PowerShell 远程处理的选项,您可能已经启用了它。但是,可以肯定的是,请按照以下步骤启用远程 PowerShell。
1. 登录远程Windows 10 PC。
2. 以管理员身份打开 PowerShell。
3. 运行以下命令启用远程 PowerShell。
Enable-PSRemoting
该命令执行多项配置更改,您将在控制台上看到这些更改。
通过 SSH 在 Linux 上启用远程 PowerShell
WinRM 是 Windows 独有的,这意味着您无法使用它在 Linux 上启用远程 PowerShell。相反,您可以在 Linux 上通过 SSH 启用远程 PowerShell。假设您已经安装了 PowerShell,请按照以下步骤操作。
1. 登录到远程 Linux 系统并打开终端会话。
2. 在文本编辑器中打开 SSH 服务器配置文件。使用您选择的文本编辑器,例如 Gedit、Sublime 或 Nano。本示例使用 Gedit。
sudo nano /etc/ssh/sshd_config
3. 接下来,将以下行添加到文件中。此行创建一个托管 PowerShell 进程的 SSH 子系统。
Subsystem powershell /usr/bin/pwsh -sshs -NoLogo
4. 关闭编辑器。
5. 最后,通过运行以下命令重新启动 SSH 服务器。
sudo systemctl restart sshd
在本地计算机上添加远程 PowerShell 可信主机
此时,您的远程计算机已准备好接收命令。但是,如果远程 PowerShell 主机不在受信任的主机列表中,您的管理计算机可能会拒绝连接。为了避免可能的远程处理问题,您必须将远程主机添加到受信任的主机中。
在管理计算机上以管理员身份打开 PowerShell。
运行以下 winrm
命令。此命令将您的远程 Windows (192.168.8.107
) 和 Linux (192.168.8.171
) 计算机添加到计算机的可信主机列表中。
winrm set winrm/config/client '@{TrustedHosts=" 192.168.8.171,192.168.8.107"}'
在远程计算机上运行命令
所有部分就位后,您将在本节中在远程计算机上执行命令。
1. 在管理计算机上打开一个新的 PowerShell 会话。
2. 现在,执行以下 Invoke-Command
命令,以用户 ma
的身份列出远程计算机上的前五个服务。要运行的命令出现在 ScriptBlock
开关的大括号之间,如下所示。
Invoke-Command `
-ComputerName 192.168.8.107 `
-Credential 'ma' `
-ScriptBlock { Get-Process | Select-Object -First 5 }
3. 要对远程 Linux 主机执行相同的操作,请运行以下命令。请注意,-HostName
替换了 -ComputerName
,-UserName
替换了 -ComputerName
。这些参数向 Invoke-Command
cmdlet 指示目标是 SSH 主机。
Invoke-Command `
-HostName 192.168.8.171 `
-UserName 'test' `
-ScriptBlock { Get-Process | Select-Object -First 5 }
在远程计算机上执行脚本
您还可以使用 Invoke-Command
cmdlet 在远程计算机上运行 PowerShell 脚本文件。但您无需指定 -ScriptBlock
参数,而是指定 -FilePath
参数,后跟脚本本地路径。
1. 首先,在本地计算机上创建一个名为 nametime.ps1
的 PowerShell 脚本文件。
2. 在您喜欢的脚本编辑器中打开脚本并添加以下代码。之后保存文件。
# nametime.ps1
hostname
Get-Date
3. 使用 -FilePath
参数执行 Invoke-command
cmdlet。 -FilePath
应指向脚本文件。在此示例中,脚本文件位于同一工作目录中。
# Invoke the script on the remote PowerShell over WinRM
Invoke-Command `
-ComputerName 192.168.8.107 `
-Credential 'ma' `
-FilePath .\nametime.ps1
# Invoke the script on the remote PowerShell over SSH
Invoke-Command `
-HostName 192.168.8.171 `
-UserName 'test' `
-FilePath .\nametime.ps1
交互式管理远程计算机
在上一节中,您了解了如何在远程计算机上运行单个命令。在本节中,您将学习如何打开交互式会话,以便可以在远程计算机上运行多个命令,就像在本地计算机上一样。
1. 执行 Enter-PSSession
命令以用户 ma
在位于 192.168.8.107
的计算机上启动远程会话。
Enter-PSSession -ComputerName 192.168.8.107 -Credential ma
在提示符下输入远程用户帐户密码 ma,如下所示。
您将看到一个新提示,如下所示。方括号内的 IP 地址表示远程 PowerShell 主机。
3. 使用dir
命令列出当前工作目录中的文件,如下所示。您可以在会话 dir
中执行任意数量的 PowerShell 命令
dir
该目录的内容应该显示在您的屏幕上,如下面的屏幕截图所示。
4. 管理完远程计算机后,执行下面的 Exit-PSSession
cmdlet 退出会话。
Exit-PSSession
退出后,您应该返回到本地提示符,如下面的屏幕截图所示
断开和重新连接远程 PowerShell 会话
可以永久存储会话作为交互式会话或一次性命令的替代方案。存储会话使您能够在会话之间切换而不会丢失上下文。在本节中,您将学习创建和管理持久会话。
1. 运行 New-PSSession
cmdlet,以用户 ma
(-凭证
)。将会话保存在变量 $var
中,如下所示。
$var = New-PSSession -ComputerName 192.168.8.107 -Credential ma
2、执行变量$var
,查看其内容如下
$var
如下所示,您应该会看到一个会话对象,其 RemoteMachine ComputerType 和 State 设置为 Opened。
3. 运行Enter-PSSession
命令进入$var
中存储的会话。
Enter-PSSession $var
如果一切顺利,提示符将更改为远程提示符,没有任何进一步的输出,如下所示。
4. 在会话中创建变量$rem1
。使用适合您的任何变量名称和标识符字符串。稍后您将使用此变量来确定您是否已连接到同一会话。
$rem1 = "same session"
5. 运行以下命令退出远程 PowerShell 会话。
Exit-PSSession
6. 重新建立远程 PowerShell 会话。
Enter-PSSession $var
7. 在远程会话提示符处执行 $rem1
变量(如下所示)以查看其值。
$rem1
在退出远程 PowerShell 会话之前,您应该会看到与之前设置的值相同的值,从而确认您已重新连接到同一会话。
8. 运行 Exit-PSSession
命令再次退出会话,如下所示。
Exit-PSSession
9. 最后,执行 Invoke-Command
,并将 session
开关设置为 $var
,以在同一远程会话中显示远程计算机的主机名。此方法是在同一会话中运行命令的另一种方法,无需手动连接、断开连接和重新连接到单个会话。
Invoke-Command -Session $var -ScriptBlock {hostname}
10. 运行 Remove-PSSession
以完全删除存储在 $var
中的会话。
Remove-PSSession $var
结论
恭喜!通过完成本教程,您已经了解了如何使用远程 PowerShell 管理 Windows 或 Linux 系统。本指南旨在让您入门。为什么不尝试通过远程会话在 Linux 上更深入地使用 PowerShell?
猜你还喜欢
- 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 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[剧集] [央视][笑傲江湖][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
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [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