30、PowerShell 7 在 Linux 和 macOS 上的使用指南

PowerShell 7 在 Linux 和 macOS 上的使用指南

1. 技术环境准备

若没有运行 Linux 的客户端,就需要准备一个 Linux 设备。获取 Linux 设备有简单和稍难两种方式。这里介绍在 Windows 上安装 Ubuntu 服务器(无图形界面)和在 Oracle VirtualBox 中安装 CentOS 桌面客户端的方法。

1.1 安装 Ubuntu 服务器
  • 确保 Windows 子系统 for Linux(WSL)已启用:
  • 打开“控制面板” -> “程序和功能” -> “启用或关闭 Windows 功能”,勾选“适用于 Linux 的 Windows 子系统”。
  • 重启后,打开 Microsoft Store(https://apps.microsoft.com),搜索并选择最新版本的 Ubuntu(如 22.04),点击“安装”,再点击“获取”,下载完成后点击“打开”。
  • 在终端窗口中,等待安装完成,之后按提示创建用户名和输入两次密码,至此 Ubuntu 环境准备好安装 PowerShell。

注意,这些说明适用于 Windows 10 Pro 版本 19045,不同平台(如 Windows 11 或 Windows Server)安装 WSL 的步骤可能不同,且还有 WSL2 版本适用于较新的操作系统。

1.2 安装 CentOS 客户端

在 Oracle VirtualBox 中安装 CentOS,安装 VirtualBox 的说明可参考:https://www.virtualbox.org/manual/UserManual.html#installation。
安装好 VirtualBox 后,从 http://isoredirect.centos.org/centos/7/isos 下载 CentOS 镜像,并按照 https://www.linuxfordevices.com/tutorials/centos/centos-on-virtualbox 的说明创建虚拟机进行安装。这里安装了带有 GNOME 桌面 GUI 的 CentOS 7,以便在旧操作系统上安装 PowerShell。

若要进行 macOS 相关操作,还需要一台 Mac 设备。

2. 安装 PowerShell 7

安装 PowerShell 7 相对简单,但要确保 PowerShell 和 Linux 版本在支持矩阵内,否则可能出现意外结果。Microsoft 仅支持 RHEL、Ubuntu、Alpine 和 Debian 等少数 Linux 版本。

2.1 在 Ubuntu 22.04 上安装 PowerShell 7.4

在 Ubuntu 22.04 上安装 PowerShell 7.4,可按以下步骤操作:
1. 更新本地软件包:

sudo apt-get update
  1. 安装先决条件包:
sudo apt-get install -y wget apt-transport-https software-properties-common
  1. 获取操作系统版本:
source /etc/os-release
  1. 下载正确的存储库包:
wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
  1. 注册存储库:
sudo dpkg -i packages-microsoft-prod.deb
  1. 删除密钥文件:
rm packages-microsoft-prod.deb
  1. 再次更新软件包列表:
sudo apt-get update
  1. 安装 PowerShell:
sudo apt-get install -y powershell

启动 PowerShell 只需输入 pwsh ,输入 exit 可关闭,若想让 PowerShell 在后台运行,可输入 bash 切换到 Bash 提示符。在 Linux 上,PowerShell 大小写不敏感,如 get-process Get-Process 效果相同,且支持 tab 补全。

2.2 在 CentOS 上安装 PowerShell
  • CentOS 8 和 9 :安装最新版本的 PowerShell 与 Ubuntu 类似,但使用 yum (RHEL 8)或 dnf (RHEL 9)包管理器。操作步骤如下:
    1. 使用 curl 下载存储库包:
curl -ssl -O https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
  1. 注册存储库:
sudo rpm -i packages-microsoft-prod.rpm
  1. 删除密钥文件:
rm packages-microsoft-prod.rpm
  1. 更新软件包列表:
sudo dnf update
  1. 安装 PowerShell:
sudo dnf install powershell -y

若安装失败,可能是代理设置问题, yum 的代理设置在 /etc/yum.conf dnf 的代理设置在 /etc/dnf/dnf.conf

  • CentOS 7 :由于 CentOS 7 与较新版本的 PowerShell 依赖的 Linux 库不兼容,最后一个稳定版本是 7.2。可通过直接下载安装:
sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v7.2.17/powershell-7.2.17-1.rh.x86_64.rpm
3. 安装 VS Code

在 Linux 上安装 VS Code 很简单。

3.1 使用 snapd 安装(适用于 Ubuntu 及部分 RHEL 和 CentOS 机器)
  • 在较新的 Ubuntu 机器上,可直接使用以下命令安装:
sudo snap install --classic code
  • 在 RHEL 和 CentOS 机器上,可能需要先启用 snapd:
    1. 安装 snapd 包:
sudo yum install snapd

对于 CentOS 7,还需运行:

sudo yum install epel-release
  1. 启用 snap 使用的网络套接字:
sudo systemctl enable --now snapd.socket
  1. 创建符号链接:
sudo ln -s /var/lib/snapd/snap /snap
  1. 注销并重新登录或重启机器,然后使用 snap 安装 VS Code。

使用 snap 的好处是能在后台自动更新 VS Code。

3.2 手动安装(适用于 CentOS 7)
  1. 注册 Microsoft GPG 加密密钥:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  1. 创建并编辑 vscode.repo 文件:
sudo nano /etc/yum.repos.d/vscode.repo

在文件中添加以下内容并保存:

[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
  1. 安装 VS Code:
sudo yum install code

在终端输入 code 即可启动 VS Code,其在 Linux 上的使用方式与 Windows 相同。

4. 在 Linux 上运行 PowerShell

PowerShell 在 Linux 上的工作方式与 Windows 基本相同,但由于底层操作系统不同,有以下几点需要注意:

4.1 大小写敏感性

在 Linux 上,虽然 PowerShell 本身大小写不敏感,但文件路径和文件名的大小写很重要。例如,若文件名为 MyFile.txt get-content ./myfile.txt 可能无法找到文件。可尽量使用 tab 补全来避免这个问题。

4.2 文件系统差异

Linux 不使用字母区分驱动器,使用正斜杠 / 作为路径分隔符,PowerShell 能识别 / \ 作为文件路径分隔符,这使得编写跨平台脚本更方便。

4.3 别名差异

PowerShell 7 在 Linux 上不再包含常见的别名(如 ls ),而是直接调用 Bash 命令。其他不再使用别名的 Linux 命令包括 cp mv rm cat man mount ps

4.4 以管理员身份运行

在 Linux 上,不能像在 Windows 上那样在 PowerShell 中使用 sudo 前缀运行命令,而是需要使用 sudo pwsh 启动 PowerShell 以获取 root 权限。

4.5 跨平台脚本编写

可通过测试自动变量 $IsWindows $IsLinux $IsMacOS 来判断脚本运行的平台,并根据不同环境编写 if 语句改变脚本行为。

5. 编写跨平台脚本示例

编写一个跨平台脚本,在 Windows 和 Linux 上运行,返回当前 CPU 使用率最高的五个进程,并按降序输出到一个包含计算机名的文本文件中。

在 Windows 上,可使用 $env:computername 获取计算机名;在 Linux 上,可使用 hostname 命令。

6. 使用 OpenSSH 进行远程操作

Linux 不支持 Windows 远程管理(WinRM)协议,因此需使用 SSH 进行远程管理。OpenSSH 是开源的 SSH 工具集,自 2018 年起可用于 Windows,方便管理异构环境。

6.1 检查 PowerShell 是否支持 OpenSSH

使用以下命令检查 PowerShell 7 是否支持 OpenSSH:

(Get-Command New-PSSession).ParameterSets.Name

若看到 SSHHost SSHHostHashParam 参数集,则表示支持;否则,需从 GitHub 下载最新版本的 PowerShell 7。

6.2 在 Windows 上安装 OpenSSH

若要远程连接到 Windows 机器,则需要安装 OpenSSH 服务器;若从 Windows 机器远程连接到其他机器,则无需安装,PowerShell 已有可用的 SSH 客户端。

安装 OpenSSH 服务器的步骤如下:
1. 检查 Windows 版本和权限:

(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Winver.exe

确保 Windows 版本不低于 10 1809 且具有管理员权限。
2. 安装 OpenSSH:

Get-WindowsCapability -Online | Where-Object {$_.Name -like 'OpenSSH*'} | Add-WindowsCapability -Online
  1. 启动并设置 sshd 服务自动启动:
Start-Service sshd
Set-Service sshd -StartupType Automatic
  1. 配置 sshd 以允许 PowerShell 使用:
    以管理员身份打开记事本,打开 C:\ProgramData\ssh\sshd_config 文件,在文件最后一条记录之前添加以下内容并保存:
PasswordAuthentication yes
PubkeyAuthentication yes
Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo

若使用 PowerShell 7.4 或更高版本, -nologo 参数可省略。注意不要将文件保存为 sshd_config.txt

通过以上步骤,可在 Linux 和 macOS 上顺利安装和使用 PowerShell 7,进行本地和远程操作,并编写跨平台脚本。

PowerShell 7 在 Linux 和 macOS 上的使用指南

7. 跨平台脚本编写示例代码实现

为了实现前面提到的跨平台脚本,以下是具体的代码示例:

# 检查操作系统平台
if ($IsWindows) {
    $computerName = $env:computername
    $processes = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
} elseif ($IsLinux) {
    $computerName = hostname
    $processes = ps -eo %cpu,comm | sort -k 1 -nr | head -n 5
}

# 构建输出文件名
$outputFileName = "$computerName-processes.txt"

# 输出结果到文件
if ($IsWindows) {
    $processes | Out-File -FilePath $outputFileName
} elseif ($IsLinux) {
    $processes | tee $outputFileName
}

上述脚本首先通过 $IsWindows $IsLinux 自动变量判断当前操作系统,然后根据不同的系统获取计算机名和 CPU 使用率最高的五个进程,最后将结果输出到以计算机名命名的文本文件中。

8. 跨平台脚本编写注意事项表格
注意事项 详情
变量使用 不同操作系统的环境变量获取方式不同,如 Windows 用 $env:变量名 ,Linux 部分可通过命令获取
命令差异 不同操作系统的命令存在差异,如获取进程信息,Windows 用 Get-Process ,Linux 用 ps 命令
文件路径分隔符 虽然 PowerShell 能识别 / \ ,但在不同系统中推荐使用各自的标准分隔符
9. OpenSSH 远程操作流程图
graph LR
    A[检查 PowerShell 是否支持 OpenSSH] --> B{支持?}
    B -- 是 --> C[根据需求决定是否在 Windows 安装 OpenSSH 服务器]
    B -- 否 --> D[从 GitHub 下载最新版本 PowerShell 7]
    D --> C
    C -- 是 --> E[检查 Windows 版本和权限]
    C -- 否 --> F[使用 PowerShell 已有 SSH 客户端远程连接]
    E --> G{满足条件?}
    G -- 是 --> H[安装 OpenSSH]
    G -- 否 --> I[解决版本或权限问题]
    I --> E
    H --> J[启动并设置 sshd 服务自动启动]
    J --> K[配置 sshd 以允许 PowerShell 使用]
    K --> F
10. OpenSSH 远程操作的常见问题及解决方法列表
  • 连接失败
    • 检查目标机器的 SSH 服务是否正常运行,可在目标机器上使用 systemctl status sshd 查看状态。
    • 检查防火墙设置,确保 SSH 端口(默认 22)开放。
  • 权限问题
    • 确保在 Windows 上以管理员权限执行相关操作。
    • 在 Linux 上,确保使用 sudo 启动 PowerShell 以获取足够权限。
  • 代理问题
    • 若存在代理,检查 CentOS 中 yum /etc/yum.conf )和 dnf /etc/dnf/dnf.conf )的代理设置。
11. 总结

通过前面的介绍,我们详细了解了在 Linux 和 macOS 上安装 PowerShell 7、VS Code 的方法,掌握了在 Linux 上运行 PowerShell 的注意事项,学会了编写跨平台脚本以及使用 OpenSSH 进行远程操作。这些知识和技能能够帮助我们更好地利用 PowerShell 的强大功能,实现跨平台的自动化任务和脚本编写,提高工作效率和系统管理的便捷性。无论是在开发、测试还是生产环境中,都能发挥重要作用。希望大家在实际应用中不断实践和探索,进一步挖掘 PowerShell 的潜力。

随着信息技术在管理上越来越深入而广泛的应用,作为学校以及一些培训机构,都在用信息化战术来部署线上学习以及线上考试,可以与线下的考试有机的结合在一起,实现基于SSM的小码创客教育教学资源库的设计与实现在技术上已成熟。本文介绍了基于SSM的小码创客教育教学资源库的设计与实现的开发全过程。通过分析企业对于基于SSM的小码创客教育教学资源库的设计与实现的需求,创建了一个计算机管理基于SSM的小码创客教育教学资源库的设计与实现的方案。文章介绍了基于SSM的小码创客教育教学资源库的设计与实现的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计数据库设计。 本基于SSM的小码创客教育教学资源库的设计与实现有管理员,校长,教师,学员四个角色。管理员可以管理校长,教师,学员等基本信息,校长角色除了校长管理之外,其他管理员可以操作的校长角色都可以操作。教师可以发布论坛,课件,视频,作业,学员可以查看下载所有发布的信息,还可以上传作业。因而具有一定的实用性。 本站是一个B/S模式系统,采用Java的SSM框架作为开发技术,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的小码创客教育教学资源库的设计与实现管理工作系统化、规范化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值