您是否曾经尝试编写一些 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
命令中添加 -Full
参数。
运行下面的代码,以获取有关 Get-Help
命令本身的完整信息(使用 -Full
参数)。

也许您在运行命令时仍需要更多示例以避免错误。在这种情况下,添加 -Examples
参数以查看编写命令的示例。
运行下面的 Get-Help
命令,以获取有关如何使用 Get-Process
命令的示例(使用 -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-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
命令将数据转换为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,-Name G*)。

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

结论
本教程为您提供了有关运行基本 PowerShell 命令的详细指南。现在,您应该知道如何广泛地使用管道和运行命令,并避免在任何时候被编码困住。
现在,你将如何在这个新获得的知识上进一步发展呢?也许学习如何在 PowerShell 脚本中编写多行命令而不搞砸呢?
Source:
https://adamtheautomator.com/basic-powershell-commands/