你曾经尝试过编写一些 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。

如果您想查看有关cmdlet的完整信息而不仅仅是详细信息,则在Get-Help
命令中添加-Full
参数。
运行下面的代码以获取有关Get-Help
cmdlet本身的完整(-Full
)信息。

也许您在运行命令时仍需要更多示例以避免错误。在这种情况下,在Get-Help
命令中添加-Examples
参数以查看编写命令的示例。
运行下面的Get-Help
命令以获取有关如何使用Get-Process
cmdlet的示例(-Examples
)。

使用Get-Process检索计算机进程
你还记得显示所有进程、服务、应用程序等的 Windows 任务管理器 吗?很好! Get-Process
cmdlet 是一个基本但必不可少的 cmdlet,它让你在几个步骤内就能访问所有计算机进程,而不用打开任务管理器。
运行以下命令以获取以表格格式列出的所有系统进程列表。

当进程冻结并导致计算机运行缓慢时,通过将
Get-Process
cmdlet 导向Stop-Process
cmdlet 来停止进程。例如:运行Get-Process -Id 1252 | Stop-Process
,其中-Id 1252
指定了要停止的进程的进程 ID。
使用 Get-History 获取 PowerShell 会话历史
可能需要检查您最近的命令,例如验证您执行的最近命令是否正确,或者您是否实际执行了一个命令。但是 PowerShell 有命令历史记录吗?是的!Get-History
cmdlet 返回您当前 PowerShell 会话中所有最近命令的对象。
运行以下命令以获取当前会话中所有最近执行的命令的列表。

如果您想查看历史记录中特定命令,请添加
-Id
参数,后跟历史记录中命令的 ID 编号。例如,运行Get-History -Id 2
以查看历史记录中的第二个命令。
使用 Get-Service 显示系统服务
与Get-Process
cmdlet 类似,PowerShell 还允许您查看系统中运行的所有服务。Get-Service
cmdlet 允许您查看所有服务,这些服务可能是数据库服务器或自动控制计算机屏幕亮度的应用程序。
运行以下命令以以表格格式获取系统上所有服务的列表。使用此命令,您甚至可以查看已停止的服务。

也许您正在寻找以特定字符开头的服务。如果是这样,添加通配符字符(*)就可以解决问题。
运行以下Get-Service
命令,传递您想要查看的服务的第一个字母和星号(A*
)。添加通配符字符可以让您过滤所有不以字母“A”开头的服务。

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

由于您在处理后台作业,那么如何检查作业是否仍在运行或已完成?运行
Get-Job
cmdlet以获取会话中的所有作业。
使用Set-Location更改工作目录
有时候你需要改变目录,比如在特定位置运行脚本或程序时。但是你如何改变目录呢?让 Set-Location
命令来帮助你。 Set-Location
命令将当前工作目录设置为你在命令中指定的目录。
运行下面的代码将当前工作目录设置为 C:\Users\hp\Desktop。用你电脑用户名替换 hp
。
下面,你可以在提示符中看到 C:\Users\hp\Desktop 现在是工作目录。

通过 Test-Path 验证路径是否存在
如果你尝试访问一个不存在的文件,PowerShell 可能会显示一个错误。如何避免这种情况? Test-Path
命令可以让你检查路径是否存在,具有直观的语法。
现在,在桌面上创建一个名为 NewFolder 的文件夹。
运行下面的 Test-Path
命令,后面跟上你想测试的路径。在这个例子中,该命令测试 C:\Users\hp\Desktop\NewFolder 路径是否存在。
以下是命令返回的结果,因为路径存在,所以返回True值。否则,您将得到一个False的输出。

使用ConvertTo-HTML将PowerShell对象转换为HTML
如果您希望以有组织的形式查看数据,请使用ConvertTo-Html
cmdlet将数据转换为HTML。基本上,该命令接收您想要转换的输出文件以及您想要保存的文件名。
运行以下命令以收集内存中所有PowerShell命令(Get-Command
)的列表,并将列表转换为名为Command.html
的HTML文件。
由于您之前更改了工作目录,因此HTML文件保存在桌面上。如果希望将HTML文件保存在其他位置,请指定完整路径。例如:
Get-Command | ConvertTo-HTML > C:\Temp\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
。
就像在 ConvertTo-Html cmdlet 中一样,您也可以像这样指定 CSV 文件的导出路径:
Get-Command | Export-CSV C:\Temp\Commands.csv
打开 Commands.csv 文件,您会看到类似下面的内容。不错,对吧?

使用 Get-Command 查看所有可用的 PowerShell 命令
列表中的最后一个 PowerShell 命令是 Get-Command
cmdlet。Get-Command
cmdlet 基本上以表格格式列出了您可以运行的所有可用的 PowerShell 命令。但正如您在前面的示例中所见,您知道 Get-Command
能做的不仅仅是这些。
也许您想有选择地列出 cmdlets 或别名。如果是这样,请向 Get-Command
cmdlet 添加 -CommandType
参数,以通过您指定的命令类型筛选输出。 -CommandType
参数的值可以是 Alias
、Cmdlet
或 Function
。
运行下面的 Get-Command
命令,仅列出以 ‘G’ 开头的 cmdlets(-CommandType Cmdlet
)。

另一种过滤 Get-Command
输出的方法是将其传递给 Select-Object
cmdlet。正如您所知,Get-Command
cmdlet 返回的对象以表格格式呈现。在该表格中,列名表示您可以从对象中选择的属性。
运行下面的 Get-Command
命令,收集所有 PowerShell 命令的列表,并将显示过滤为显示每个命令的定义属性(Select-Object -Property Definition
)。

结论
本教程为您提供了运行基本 PowerShell 命令的全面指南。到目前为止,您应该知道如何广泛使用管道运行命令,并随时避免在编码时陷入困境。
现在,您将如何在这些新发现的知识基础上进行深入学习呢?也许学习如何在 PowerShell 脚本中编写多行命令而不搞砸事情?
Source:
https://adamtheautomator.com/basic-powershell-commands/