您需要知道的10個基本PowerShell命令

您是否曾经尝试编写一些 PowerShell 代码并遇到困难?不用担心!最好的学习 PowerShell 的方法之一是了解基础知识。掌握一些基本的 PowerShell 命令可以让您成为专家,并更高效地自动化管理任务。

在本教程中,您将学习到一些基本的 PowerShell 命令,以使您的 PowerShell 经验更有趣。

先决条件

本教程是一个实践演示,但没有太多的先决条件。如果您想跟着操作,任何安装了 PowerShell 5.1 或更高版本的系统(Windows 或 Linux)都可以使用。尽管命令是在 Windows PowerShell 中显示的,下面的示例在 PowerShell 7+ 跨平台中也适用。

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

您是否曾经在编写代码时像老板一样自信,没有寻求任何帮助?实际上,编写代码时总是需要帮助的。无论您是在命令行环境中运行代码还是命令,Get-Help 命令都非常有用。

让我们从学习 Get-Help 命令开始本教程。

Get-Help 命令提供了使用任何命令的指南,以便有效地避免出现错误。将其视为每个 PowerShell 命令的文档。

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

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

如果您希望查看命令的完整信息,而不仅仅是详细信息,请在 Get-Help 命令中添加 -Full 参数。

运行下面的代码,以获取有关 Get-Help 命令本身的完整信息(使用 -Full 参数)。

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

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

运行下面的 Get-Help 命令,以获取有关如何使用 Get-Process 命令的示例(使用 -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啟動一個後台作業。啟動後台作業會運行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命令将数据转换为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 参数的值可以是 Alias、Cmdlet 或 Function。

运行下面的 Get-Command 命令,只列出以“G”开头的 cmdlets(-CommandType Cmdlet,-Name G*)。

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/