你需要了解的10个基本 PowerShell 命令

你曾经尝试过编写一些 PowerShell 代码却卡住了吗?不用担心了!要想精通 PowerShell,其中一个最好的方法就是理解基础知识。掌握一些基本的 PowerShell 命令可以让你成为专家,并且可以更有效地自动化管理任务。

在本教程中,你将学习到一些基本的 PowerShell 命令,让你的 PowerShell 使用体验更加有趣。

先决条件

本教程将是一个实践演示,但它并没有太多的先决条件。如果你想跟着做,任何安装了 PowerShell 5.1 或以上版本的系统(Windows 或 Linux)都可以。虽然命令是在 Windows PowerShell 下展示的,但下面的示例在 PowerShell 7+ 跨平台环境中同样适用。

使用 Get-Help 获取命令的帮助信息

你有没有像老板一样自己编写代码而不寻求任何帮助?其实,当你编写代码时总会需要帮助。无论你是在命令行环境下运行代码还是命令,Get-Help 命令都会派上用场。

让我们从学习 Get-Help 命令的工作方式开始本教程。

Get-Help cmdlet为您提供了使用任何命令而不出错所需的指南。将其视为每个PowerShell命令的文档。

以管理员身份打开PowerShell,并运行下面的Get-Help命令以查看有关命令的详细(-Detailed)信息,例如Get-ExecutionPolicy cmdlet。

Get-Help -Name Get-ExecutionPolicy -Detailed
Getting Detailed Information of Commands

如果您想查看有关cmdlet的完整信息而不仅仅是详细信息,则在Get-Help命令中添加-Full参数。

运行下面的代码以获取有关Get-Help cmdlet本身的完整(-Full)信息。

Get-Help Get-Help -Full
Getting Full Information of Commands

也许您在运行命令时仍需要更多示例以避免错误。在这种情况下,在Get-Help命令中添加-Examples参数以查看编写命令的示例。

运行下面的Get-Help命令以获取有关如何使用Get-Process cmdlet的示例(-Examples)。

 Get-Help Get-Process -Examples
Applying -Examples to get help for Get-Process

使用Get-Process检索计算机进程

你还记得显示所有进程、服务、应用程序等的 Windows 任务管理器 吗?很好! Get-Process cmdlet 是一个基本但必不可少的 cmdlet,它让你在几个步骤内就能访问所有计算机进程,而不用打开任务管理器。

运行以下命令以获取以表格格式列出的所有系统进程列表。

Get-Process
Getting All Windows Processes

当进程冻结并导致计算机运行缓慢时,通过将 Get-Process cmdlet 导向 Stop-Process cmdlet 来停止进程。例如:运行 Get-Process -Id 1252 | Stop-Process,其中 -Id 1252 指定了要停止的进程的进程 ID。

使用 Get-History 获取 PowerShell 会话历史

可能需要检查您最近的命令,例如验证您执行的最近命令是否正确,或者您是否实际执行了一个命令。但是 PowerShell 有命令历史记录吗?是的!Get-History cmdlet 返回您当前 PowerShell 会话中所有最近命令的对象。

运行以下命令以获取当前会话中所有最近执行的命令的列表。

Get-History
Getting the commands history of the current session

如果您想查看历史记录中特定命令,请添加-Id参数,后跟历史记录中命令的 ID 编号。例如,运行Get-History -Id 2以查看历史记录中的第二个命令。

使用 Get-Service 显示系统服务

Get-Process cmdlet 类似,PowerShell 还允许您查看系统中运行的所有服务。Get-Service cmdlet 允许您查看所有服务,这些服务可能是数据库服务器或自动控制计算机屏幕亮度的应用程序。

运行以下命令以以表格格式获取系统上所有服务的列表。使用此命令,您甚至可以查看已停止的服务。

Get-Service
Getting all available services on the local computer

也许您正在寻找以特定字符开头的服务。如果是这样,添加通配符字符(*)就可以解决问题。

运行以下Get-Service命令,传递您想要查看的服务的第一个字母和星号(A*)。添加通配符字符可以让您过滤所有不以字母“A”开头的服务。

Get-Service A*
Getting all services that start with the letter ‘A’

使用Start-Job运行后台作业

如果写代码时仍有很多内容要写,但是单个命令要写很长时间,这可能会让人感到烦恼。没问题!PowerShell提供了一个cmdlet,在会话中运行后台作业。Start-Job cmdlet提供了一个PowerShell环境,用于在后台作业中运行代码或命令,而无需用户交互。

运行以下Start-Job命令以启动Get-Command cmdlet的后台作业。启动后台作业会在命令行上不显示输出。

Start-Job -ScriptBlock {Get-Command}
Starting a background job for Get-Command

由于您在处理后台作业,那么如何检查作业是否仍在运行或已完成?运行Get-Job cmdlet以获取会话中的所有作业。

使用Set-Location更改工作目录

有时候你需要改变目录,比如在特定位置运行脚本或程序时。但是你如何改变目录呢?让 Set-Location 命令来帮助你。 Set-Location 命令将当前工作目录设置为你在命令中指定的目录。

运行下面的代码将当前工作目录设置为 C:\Users\hp\Desktop。用你电脑用户名替换 hp

Set-Location C:\Users\hp\Desktop

下面,你可以在提示符中看到 C:\Users\hp\Desktop 现在是工作目录。

Changing Working Directory

通过 Test-Path 验证路径是否存在

如果你尝试访问一个不存在的文件,PowerShell 可能会显示一个错误。如何避免这种情况? Test-Path 命令可以让你检查路径是否存在,具有直观的语法。

现在,在桌面上创建一个名为 NewFolder 的文件夹。

运行下面的 Test-Path 命令,后面跟上你想测试的路径。在这个例子中,该命令测试 C:\Users\hp\Desktop\NewFolder 路径是否存在。

Test-Path C:\Users\hp\Desktop\NewFolder

以下是命令返回的结果,因为路径存在,所以返回True值。否则,您将得到一个False的输出。

Testing if the path exists

使用ConvertTo-HTML将PowerShell对象转换为HTML

如果您希望以有组织的形式查看数据,请使用ConvertTo-Html cmdlet将数据转换为HTML。基本上,该命令接收您想要转换的输出文件以及您想要保存的文件名。

运行以下命令以收集内存中所有PowerShell命令(Get-Command)的列表,并将列表转换为名为Command.html的HTML文件。

由于您之前更改了工作目录,因此HTML文件保存在桌面上。如果希望将HTML文件保存在其他位置,请指定完整路径。例如:Get-Command | ConvertTo-HTML > C:\Temp\Commands.html

# 创建一个包含所有PowerShell命令的Commands.html文件
Get-Command | ConvertTo-Html > Commands.html

使用Export-CSV将PowerShell对象导出为CSV

如果您认为 CSV 格式的报告比 HTML 更好,那么可以使用 Export-CSV cmdlet。与 ConvertTo-Html cmdlet 类似,Export-CSV cmdlet 允许将数据导出到 CSV 文件。

运行以下命令以收集 PowerShell 命令列表 (Get-Command),并将列表导出为 CSV 文件 (Export-CSV),文件名为 Commands.csv

Get-Command | Export-CSV Commands.csv

就像在 ConvertTo-Html cmdlet 中一样,您也可以像这样指定 CSV 文件的导出路径:Get-Command | Export-CSV C:\Temp\Commands.csv

打开 Commands.csv 文件,您会看到类似下面的内容。不错,对吧?

Opening Exported Commands.csv in Microsoft Excel

使用 Get-Command 查看所有可用的 PowerShell 命令

列表中的最后一个 PowerShell 命令是 Get-Command cmdlet。Get-Command cmdlet 基本上以表格格式列出了您可以运行的所有可用的 PowerShell 命令。但正如您在前面的示例中所见,您知道 Get-Command 能做的不仅仅是这些。

也许您想有选择地列出 cmdlets 或别名。如果是这样,请向 Get-Command cmdlet 添加 -CommandType 参数,以通过您指定的命令类型筛选输出。 -CommandType 参数的值可以是 AliasCmdletFunction

运行下面的 Get-Command 命令,仅列出以 ‘G’ 开头的 cmdlets(-CommandType Cmdlet)。

Get-Command -Name G* -CommandType Cmdlet
Getting all cmdlets that start with the letter ‘G’

另一种过滤 Get-Command 输出的方法是将其传递给 Select-Object cmdlet。正如您所知,Get-Command cmdlet 返回的对象以表格格式呈现。在该表格中,列名表示您可以从对象中选择的属性。

运行下面的 Get-Command 命令,收集所有 PowerShell 命令的列表,并将显示过滤为显示每个命令的定义属性(Select-Object -Property Definition)。

Get-Command | Select-Object -Property Definition
Property Definition

结论

本教程为您提供了运行基本 PowerShell 命令的全面指南。到目前为止,您应该知道如何广泛使用管道运行命令,并随时避免在编码时陷入困境。

现在,您将如何在这些新发现的知识基础上进行深入学习呢?也许学习如何在 PowerShell 脚本中编写多行命令而不搞砸事情?

Source:
https://adamtheautomator.com/basic-powershell-commands/