31、PowerShell 7 在 Linux、macOS 和树莓派上的使用指南

PowerShell 7跨平台使用指南

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
  1. 最后,使用以下命令重启服务:
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
  1. 输入远程用户密码,会话对象创建完成。
  2. 调用 $session 变量查看新会话的属性。
  3. 使用 $session 变量进入远程会话:
Enter-PSSession -Session $session
  1. 可以看到提示符变为 [nick@192.168.56.101]: PS /home/nick> ,表示已进入远程机器的 PowerShell 会话。运行 Get-Process 命令查找包含 shell 字符串的进程。
  2. 运行 hostname 命令返回远程系统的名称。
  3. 查看 $IsLinux 自动变量的值为 True ,确认是在 Linux 系统上。
  4. 输入 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
  1. 调用变量查看属性。
  2. 使用 $sessionSSH 变量进入会话。
  3. 提示符改变表示已进入远程会话。

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
  1. 安装 cask 仓库(如果不存在):
brew tap caskroom/cask
  1. 在仓库中搜索 VS Code:
brew cask search visual-studio-code
  1. 安装 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
  1. 安装 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/
  1. 添加 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
  1. 更新系统包列表:
sudo apt update
  1. 安装 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 远程连接
  1. 安装 Remote - SSH 扩展。
  2. 打开命令面板( Ctrl + Shift + P ),输入 Remote - SSH: Connect to Host
  3. 输入树莓派的 SSH 连接信息(如 用户名@树莓派 IP 地址 )。
  4. 输入密码完成连接。

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 的强大功能中受益。

【无人机】基于改进粒子群算法的无人机路径规划研究[遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
标题中的"EthernetIP-master.zip"压缩文档涉及工业自动化领域的以太网通信协议EtherNet/IP。该协议由罗克韦尔自动化公司基于TCP/IP技术架构开发,已广泛应用于ControlLogix系列控制设备。该压缩包内可能封装了协议实现代码、技术文档或测试工具等核心组件。 根据描述信息判断,该资源主要用于验证EtherNet/IP通信功能,可能包含测试用例、参数配置模板及故障诊断方案。标签系统通过多种拼写形式强化了协议主题标识,其中"swimo6q"字段需结合具体应用场景才能准确定义其技术含义。 从文件结构分析,该压缩包采用主分支命名规范,符合开源项目管理的基本特征。解压后预期可获取以下技术资料: 1. 项目说明文档:阐述开发目标、环境配置要求及授权条款 2. 核心算法源码:采用工业级编程语言实现的通信协议栈 3. 参数配置文件:预设网络地址、通信端口等连接参数 4. 自动化测试套件:包含协议一致性验证性能基准测试 5. 技术参考手册:详细说明API接口规范与集成方法 6. 应用示范程序:展示设备数据交换的标准流程 7. 工程构建脚本:支持跨平台编译部署流程 8. 法律声明文件:明确知识产权归属及使用限制 该测试平台可用于构建协议仿真环境,验证工业控制器与现场设备间的数据交互可靠性。在正式部署前开展此类测试,能够有效识别系统兼容性问题,提升工程实施质量。建议用户在解压文件后优先查阅许可协议,严格遵循技术文档的操作指引,同时需具备EtherNet/IP协议栈的基础知识以深入理解通信机制。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值