Linux PowerShell 基础知识(新手指南)
适用于 Linux 的 PowerShell
近年来,微软有一种趋势是将其部分产品跨平台并开源。 Linux 本身也以子系统的形式成为 Windows 的一部分。 PowerShell 最初是一个仅限 Windows 的组件,于 2016 年 8 月 18 日以开源形式发布并实现跨平台,可用于 Linux 和 Mac OS。
PowerShell 是微软开发的任务自动化和配置管理系统。它由命令解释器 (shell) 和基于 .NET Framework 的脚本语言组成。
它提供对 COM(组件对象模型)和 WMI(Windows 管理规范)的完全访问,从而允许系统管理员在本地和远程 Windows 系统以及 WS-Management 和 CIM(通用信息模型)上执行管理任务,允许您来管理远程 Linux 系统和网络设备。
在此框架内,管理任务主要由称为 cmdlet(发音为 command-let)的特定 .NET 类执行。与 Linux 中的 shell 脚本类似,用户可以按照特定规则将 cmdlet 组存储在文件中,从而创建脚本或可执行文件。这些脚本可以用作独立实用程序或命令行工具。
如何在 Linux 上安装 PowerShell
官方文档“Installing PowerShell on Linux”中描述了在各种 Linux 发行版上的安装。
但是在官方文档中缺少有关某些发行版的信息,为了填补这一空白,编写了单独的说明:
- 如何在 Linux Mint 中安装 PowerShell
- 如何在 Arch Linux、Manjaro、BlackArch 上安装 PowerShell
Linux 上 PowerShell 的功能
1。命令大小写在 PowerShell 中并不重要
在 Windows 中,命令的大小写以及文件和文件夹的名称并不重要——这与 Linux 有很大不同,在 Linux 中,命令和文件的大小写都很重要。
PowerShell 从 Windows 继承了一个特性——大小写不重要。虽然本教程显示了不同大小写的命令(例如,Get-Date),但这实际上是为了更好的可读性,您是否输入 Get-Date 并不重要、GET-DATE、get-date 或 gET-dATE。
2。缺少一些命令
PowerShell 中的命令集取决于可用的模块,也就是说,即使在 Windows 计算机上,如果您安装了 Active Directory,那么新命令也会出现在 PowerShell 中。
Linux 版本的 PowerShell 缺少标准 Windows PowerShell 中的一些命令,主要是在涉及 Windows 特定的事情时。
3。许多别名和缩写
在PowerShell命令的脚本和示例中可以看到命令的不寻常的写法——在PowerShell中,缩写是允许的,而且还有很多别名,即相同的动作可以由不同方式编写的命令执行。
4。 PowerShell 版本
请注意,PowerShell 5 目前默认预装在 Windows 上,这显示安装了最新版本的 PowerShell 7。在 Windows 上,您也可以安装 PowerShell 7,但此版本不会取代预装版本 - 将有 2此外,从“高级用户菜单”(Win+x) 启动 PowerShell 版本时,将打开 PowerShell 5,而当您启动 Windows Terminal 时,将打开 PowerShell 7。
5。跳过选项名称
一些选项是位置性的,当指定它们的值时,您可以跳过选项名称——乍一看这可能看起来很混乱。
如何在 Linux 上使用 Powershell
在本节中,我们将对 Powershell 进行简短介绍;我们将在其中了解如何启动 PowerShell,运行一些基本命令,了解如何使用文件、目录和进程。稍后,您将学习如何列出所有可用命令、显示命令帮助和别名。
要启动 Powershell,请输入:
pwsh
您可以使用以下命令检查 Powershell 版本:
$PSVersionTable

如果您只需要版本号,则使用以下结构:
Get-Host | Select-Object Version

在 Linux 上运行一些基本的 Powershell 命令。
显示当前日期:
Get-Date
显示计算机正常运行时间:
Get-Uptime
显示当前工作目录:
Get-Location
在 Powershell 中处理文件和目录
1.新建一个空文件有两种方式:
New-Item hackware.stuff
或者:
"">hackware.stuff
然后向其中添加内容,查看文件内容。
Set-Content hackware.stuff -value "Делаем pwsh.ru - это весело!"
Get-Content hackware.stuff

2. 在 PowerShell 中删除该文件。
Remove-Item hackware.stuff
Get-Content hackware.stuff

3. 创建一个新目录。
看看下面的一组命令:
mkdir hackware-files
cd hackware-files
"">domains.list
ls
听起来有点熟?是的,如前所述,PowerShell 中有许多别名。可以使用以下命令执行相同的操作:
New-Item hackware-files -ItemType "directory"
Set-Location hackware-files
New-Item domains.list
Get-ChildItem -Name

事实上,这些命令不只是做同样的事情——它们是相同的。
4. 要显示一个长列表,显示有关文件和目录的详细信息,包括模式(文件类型)、上次修改时间,请输入:
dir
或者:
Get-ChildItem
要显示特定文件夹(在本例中为文件系统的根目录)的内容,请运行:
Get-ChildItem /

在 PowerShell 中使用进程
如何使用 PowerShell 查看 Linux 中所有正在运行的进程:
Get-Process

要查看有关具有给定名称的一个或一组正在运行的进程的详细信息,请将进程名称指定为上一个命令的参数,如下所示:
Get-Process httpd

输出中单位的值如上:
- NPM(K) ——进程使用的非分页内存量,以千字节为单位。
- PM(K) ——进程正在使用的可分页内存量,以千字节为单位。
- WS(K) – 进程工作集的大小,以千字节为单位。工作集由进程最近引用的内存页面组成。
- CPU(s) – 进程在所有处理器上使用的处理器时间量,以秒为单位。
- ID – 进程 ID (PID)。
- ProcessName – 进程的名称。
要获取有关一个或多个进程的所有可能数据,请使用以下形式的命令(将 httpd 替换为您感兴趣的进程的名称):
Get-Process httpd | Format-List *
要停止 ID 为 10500 的进程,请使用如下所示的命令:
Get-Process -Id 10500 | Stop-Process
在 PowerShell 中获得帮助
要了解更多信息,请获取用于各种任务的所有 PowerShell 命令的列表:
Get-Command

可以过滤 Get-Command 命令显示的信息。假设您想查看包含单词“Alias”的 PowerShell 命令,为此您需要运行以下命令:
Get-Command -Name *Alias

要显示有关命令 (cmdlet) 的帮助,请使用以下命令:
Get-Help CMDLETS
例如,要显示有关 Get-Alias cmdlet 的帮助:
Get-Help Get-Alias
要获得有关 Get-Command 的最完整帮助,请执行以下操作:
Get-Help Get-Command -Full
PowerShell 中的别名
要查看所有可用的命令别名,请输入:
Get-Alias

要获取有关特定别名的信息,请输入其名称:
Get-Alias -Name pwd
PowerShell 命令历史
最后但同样重要的是,显示命令历史记录(您之前运行的命令列表),如下所示:
history
所以这是对 Linux 上的 PowerShell 的介绍。当然,PowerShell 实际上可以做的远不止创建文件和显示正在运行的进程。