PowerShell 7 在 Linux、macOS 和树莓派上的使用指南
1. PowerShell 7 在 Windows 上与 OpenSSH 的配置
在 Windows 上使用非微软开源软件(如 OpenSSH)时,可能会遇到路径问题。OpenSSH 不理解包含空格的路径,即使路径被单引号或双引号括起来,因此需要使用 8.3 格式(旧版微软操作系统使用的短文件名格式)。但有些 OpenSSH 版本也不支持这种格式,当在 sshd_config 文件中添加 PowerShell 子系统时, sshd 服务可能无法启动。
解决方法如下:
1. 从 PowerShell GitHub 页面下载 PowerShell 7.4 ZIP 文件。
2. 右键单击下载的文件,选择“属性”,勾选“解除锁定”。
3. 将文件内容提取到一个没有空格且名称不超过 8 个字符的目录,例如 c:\scratch\pwsh 。
4. 在 sshd_config 文件中添加以下行:
Subsystem powershell c:/scratch/pwsh/pwsh.exe -sshs
- 最后,使用以下命令重启服务:
Restart-Service sshd
2. 在 Linux 上安装和配置 OpenSSH
2.1 安装 OpenSSH
如果使用的是 Ubuntu 系统,需要先安装 OpenSSH 客户端和服务器:
sudo apt install openssh-client
sudo apt install openssh-server
2.2 配置 sshd_config 文件
使用 sudo 权限打开 /etc/ssh/sshd_config 文件:
sudo nano /etc/ssh/sshd_config
添加以下行:
PasswordAuthentication yes
PubkeyAuthentication yes
Subsystem powershell /usr/bin/pwsh -sshs -nologo
保存文件后,重启 sshd 服务并设置为自动启动:
sudo systemctl restart sshd
sudo systemctl enable sshd
3. 运行远程会话
使用 SSH 进行远程会话与使用 WinRM 类似。首先创建一个会话对象:
$session = New-PSSession -HostName <name of remote computer> -UserName <username>
注意使用 -HostName 参数而不是 -ComputerName 参数,这会告诉 PowerShell 创建一个 SSH 会话而不是 WinRM 会话。输入用户密码后,会话对象将被创建。然后可以使用该会话对象启动远程会话:
Enter-PSSession -Session $session
要离开会话,只需输入 exit 即可返回本地机器。
以下是一个实际示例:
1. 创建新会话对象并存储在变量中:
$session = New-PSSession -HostName 192.168.56.101 -UserName nick
- 输入远程用户密码,会话对象创建完成。
- 调用
$session变量查看新会话的属性。 - 使用
$session变量进入远程会话:
Enter-PSSession -Session $session
- 可以看到提示符变为
[nick@192.168.56.101]: PS /home/nick>,表示已进入远程机器的 PowerShell 会话。运行Get-Process命令查找包含shell字符串的进程。 - 运行
hostname命令返回远程系统的名称。 - 查看
$IsLinux自动变量的值为True,确认是在 Linux 系统上。 - 输入
exit返回本地 PowerShell 会话。
4. 基于密钥的身份验证
基于密钥的身份验证是使用 SSH 进行 PowerShell 远程操作更安全的方式,也便于脚本自动化。
4.1 生成密钥对
使用 Ssh-keygen 工具生成公钥/私钥对:
Ssh-keygen -t Ed25519
如果是较旧的系统,可能需要使用 RSA 算法。按提示输入保存文件的路径(建议接受默认路径),并可选择设置密码短语(按两次 Enter 键不设置密码短语)。
4.2 复制公钥到 Linux 机器
使用 scp 工具将公钥复制到 Linux 机器上要登录用户的 .ssh 目录:
scp c:\Users\<username>\.ssh\id_ed25519.pub <user>@<remote_host>:~/.ssh/authorized_keys
输入远程用户密码后,以后登录时将通过本地私钥的哈希与远程公钥的哈希匹配来进行身份验证。
以下是设置基于密钥身份验证的步骤:
1. 运行 Ssh-keygen 创建密钥对。
2. 按 Enter 接受默认路径。
3. 按两次 Enter 设置空白密码短语。
4. 使用 scp 复制公钥到远程机器。
5. 输入远程用户密码。
6. 创建新会话对象并指定私钥路径:
$sessionSSH = New-PSSession -HostName <remote_host> -UserName <user> -KeyFilePath c:\Users\<username>\.ssh\id_ed25519
- 调用变量查看属性。
- 使用
$sessionSSH变量进入会话。 - 提示符改变表示已进入远程会话。
5. 在 macOS 上安装 PowerShell 和 VS Code
5.1 安装 Homebrew
Homebrew 是一个免费的开源包管理器,可用于在 macOS 上安装 PowerShell 和 VS Code。在终端中输入以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
按提示输入密码,安装完成后会显示“Installation successful!”。
5.2 安装 PowerShell
使用 Homebrew 安装 PowerShell:
brew install powershell/tap/powershell
在终端中输入 pwsh 即可启动 PowerShell。
更新 PowerShell:
brew update
brew upgrade powershell
卸载 PowerShell:
brew uninstall --cask powershell
5.3 安装 VS Code
使用 Homebrew 安装 VS Code 的步骤如下:
1. 更新 Homebrew 数据库:
brew update
- 安装 cask 仓库(如果不存在):
brew tap caskroom/cask
- 在仓库中搜索 VS Code:
brew cask search visual-studio-code
- 安装 VS Code:
brew cask install visual-studio-code
也可以通过以下方式启动 VS Code 或添加到 PATH 变量:
cat << EOF >> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF
或者直接从 https://code.visualstudio.com/ 下载并双击安装。
卸载 VS Code:
brew cask uninstall visual-studio-code
6. 树莓派上的 PowerShell 7
6.1 树莓派简介
树莓派是由英国树莓派基金会开发的小型、经济实惠且多功能的单板计算机,旨在促进学校和发展中国家的基础计算机科学教学。它具有以下特点:
- 可用于多种任务,如浏览互联网、文字处理和玩游戏。
- 其通用输入/输出(GPIO)引脚可与外部硬件交互,适用于电子项目和物联网应用。
- 最新的树莓派 4 Model B 具有 64 位四核 ARM Cortex - A72 CPU,最高处理速度可达 1.5 GHz,有 2GB、4GB 或 8GB 的 LPDDR4 - 3200 SDRAM。
- 支持千兆以太网、蓝牙 5.0 和双频 Wi - Fi(2.4GHz 和 5.0GHz),有两个 USB 3.0 端口、两个 USB 2.0 端口、两个支持 4K 分辨率的 micro HDMI 端口和一个 USB - C 电源端口。
- 可运行多种操作系统,最流行的是树莓派操作系统(Raspberry Pi OS,原 Raspbian),这是一个基于 Debian 的操作系统,针对树莓派硬件进行了优化,并预装了基本工具、编程语言和应用程序。
6.2 技术要求
- 树莓派及电源、屏幕、键盘、鼠标和必要的电缆。
- 注意 Pi Zero 或 Pi Pico 不适用,因为它们使用不同的 ARM 芯片版本,架构与 .NET 不兼容。
- 对于简单自动化,需要面包板、LED、300 - 400 欧姆电阻(250 - 500 欧姆也可)和两根公对母跳线。
6.3 主要内容概述
- 安装 PowerShell 和 VS Code。
- 使用 SSH 通过 Wi - Fi 远程连接到无头树莓派,可使用 PowerShell 和 VS Code。
- 树莓派上 PowerShell 的默认模块。
- 创建脚本实现物理计算的第一步:让 LED 闪烁。
以下是树莓派相关操作的流程图:
graph LR
A[准备树莓派] --> B[安装 PowerShell 和 VS Code]
B --> C[远程连接树莓派]
C --> D[运行 PowerShell 脚本]
D --> E[实现 LED 闪烁]
通过以上步骤,你可以在不同操作系统上安装和使用 PowerShell 7,并利用 SSH 进行远程操作,同时在树莓派上开展有趣的物理计算项目。
6.4 安装 PowerShell 和 VS Code
在树莓派上安装 PowerShell 和 VS Code 可以按照以下步骤进行:
安装 PowerShell
通常可以使用包管理器进行安装,以树莓派操作系统为例:
1. 更新系统包列表:
sudo apt update
- 安装 PowerShell:
sudo apt install powershell
安装 VS Code
可以通过以下步骤使用命令行安装 VS Code:
1. 添加 Microsoft GPG 密钥:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
- 添加 VS Code 软件源:
echo "deb [arch=arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
- 更新系统包列表:
sudo apt update
- 安装 VS Code:
sudo apt install code
6.5 远程连接到树莓派
使用 SSH 可以通过 Wi - Fi 远程连接到无头树莓派,无论是使用 PowerShell 还是 VS Code 都可以实现。
使用 PowerShell 远程连接
在本地 PowerShell 中创建会话对象:
$session = New-PSSession -HostName <树莓派 IP 地址> -UserName <用户名>
输入密码后,使用以下命令进入远程会话:
Enter-PSSession -Session $session
使用 VS Code 远程连接
- 安装 Remote - SSH 扩展。
- 打开命令面板(
Ctrl + Shift + P),输入Remote - SSH: Connect to Host。 - 输入树莓派的 SSH 连接信息(如
用户名@树莓派 IP 地址)。 - 输入密码完成连接。
6.6 运行 PowerShell on Raspberry Pi OS
在树莓派操作系统上运行 PowerShell 与在其他系统上有一些不同之处,主要体现在以下几个方面:
| 差异点 | 说明 |
| ---- | ---- |
| 文件名大小写 | 树莓派操作系统的文件系统区分大小写,而 Windows 不区分。 |
| 路径分隔符 | 树莓派操作系统使用 / 作为路径分隔符,而 Windows 使用 \ 。 |
| 别名 | 树莓派操作系统上的 PowerShell 别名可能与 Windows 不同。 |
6.7 简单物理计算:让 LED 闪烁
以下是一个简单的 PowerShell 脚本示例,用于让连接到树莓派 GPIO 引脚的 LED 闪烁:
# 导入 Raspberry Pi GPIO 模块
Import-Module RaspberryPi.GPIO
# 设置 GPIO 引脚
$pin = 18
Set-GPIODirection -Pin $pin -Direction Out
# 循环让 LED 闪烁
for ($i = 0; $i -lt 10; $i++) {
# 点亮 LED
Set-GPIOValue -Pin $pin -Value 1
Start-Sleep -Seconds 1
# 熄灭 LED
Set-GPIOValue -Pin $pin -Value 0
Start-Sleep -Seconds 1
}
# 清理 GPIO 资源
Remove-GPIOPin -Pin $pin
运行该脚本的步骤如下:
1. 将 LED 通过电阻连接到树莓派的 GPIO 18 引脚和 GND 引脚。
2. 打开 PowerShell 并运行上述脚本。
以下是实现 LED 闪烁的步骤流程图:
graph LR
A[准备硬件连接] --> B[导入 GPIO 模块]
B --> C[设置 GPIO 引脚方向]
C --> D[循环点亮和熄灭 LED]
D --> E[清理 GPIO 资源]
综上所述,PowerShell 7 在 Linux、macOS 和树莓派上都有广泛的应用场景。通过正确的安装和配置步骤,我们可以在不同的操作系统上使用 PowerShell 进行远程操作、开发脚本,甚至在树莓派上实现有趣的物理计算项目。无论是系统管理员、开发者还是爱好者,都能从 PowerShell 的强大功能中受益。
PowerShell 7跨平台使用指南
超级会员免费看
40

被折叠的 条评论
为什么被折叠?



