如何使用 PowerShell 預設參數來變更命令行為

如何使用 PowerShell 預設參數來變更命令行為

許多人喜歡使用PowerShell,因為它允許他們做 Windows GUI 無法完成的事情。即便如此,不可否認的是,某些PowerShell cmdlet可能有點乏味或複雜。但是,如果有一種方法可以編輯這些 cmdlet 並使它們按照您想要的方式「運行」呢?不管你相信與否,有一個簡單的方法可以做到這一點。您可以透過修改PowerShell預設參數的值來變更cmdlet的行為。本文將向您展示如何使用 PowerShell 的預設參數來變更 cmdlet 命令行為。

警告

在開始之前,您需要記住一些事項。儘管更改 PowerShell 預設參數和 cmdelt 行為很方便,但可能會導致問題。如果執行腳本且該腳本假定修改後的 cmdlet 將以某種方式執行,則可能會得到不可預測的結果。因此,您應該確保仔細變更 PowerShell 預設參數。

快速復審

為了使用預設參數,您需要熟悉兩個 PowerShell 概念。第一個概念是可變的。在 PowerShell 中,變數名稱始終以美元符號開頭,您可以透過鍵入變數名稱來寫入變數的內容。

您可能熟悉的第二個概念是哈希表。哈希表本質上是由鍵/值對組成的列表。例如,假設您要建立一個包含美國各州名稱及其縮寫的雜湊表。下面是程式碼:

$StateList = @{}
$StateList.add('佛羅裡達州','FL')
$StateList.add('南卡羅來納州','SC')
$StateList.add('喬治亞州','GA')
$StateList

第一行程式碼建立一個名為$StateList的空哈希表。接下來的三行將條目新增到表中。每個條目由一個鍵(狀態名稱)和一個值(狀態縮寫)組成。最後一行列出了表格的內容。您可以在下圖中看到正在運行的程式碼。

這只是一個非常簡單的範例,還有許多其他方法可以使用哈希表。

使用 PowerShell 預設參數

PowerShell 有一個內建變量,用於儲存與其 cmdlet 一起使用的預設參數。這個變數稱為$PSDefaultParameterValues。從變量的最初介紹和名稱中您可能已經註意到,這不是一個普通的變量,而是一個哈希表。但是,如果您在 PowerShell 中輸入變數名稱,您很快就會看到該表是空的,如下所示。

如何使用 PowerShell 預設參數來變更命令行為

那我們可以用這個$PSDefaultParameterValues變數做什麼。如上所述,您可以控制 PowerShell cmdlet 的行為。唯一的一點是您無法克服 cmdlet 命令的固有功能。讓我們來看一個例子。

此範例可能不是您想要在現實生活中使用的內容,但它將向您展示從根本上更改 cmdlet 行為是多麼容易。如果您在 PowerShell 中輸入Get-TimeZone cmdlet ,您將看到您的電腦目前設定使用的時區名稱。您可以在下圖中看到這個範例。

如何使用 PowerShell 預設參數來變更命令行為

現在,我們變更此 cmdlet,使其不顯示系統配置使用的時區,而是顯示可用時區。為此,我們需要使用Get-Help cmdlet和Get-TimeZone cmdlet 的 cmdlet 語法。您可以在下面看到 cmdlet 的語法。

如何使用 PowerShell 預設參數來變更命令行為

此語法包含一個名為ListAvailable 的參數。輸入以下命令:

$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)

指令的第一部分只是告訴 PowerShell 您想要在雜湊表中新增一個值,就像我們在上一節中對美國州縮寫範例所做的那樣。該哈希表包含一個鍵/值對。在本例中,鍵是 cmdlet 名稱 (Get-TimeZone),後面跟著逗號和要設定的參數的名稱。在本例中,參數名稱為 ListAvailable。此 cmdlet 的第二部分是您要指派給參數的值。這是$True。 ListAvailable 參數通常不需要值,因此指定$True是告訴 PowerShell 使用此參數而不為其賦值的方式。

如果您查看下圖,您將看到執行 Get-TimeZone cmdlet 時會發生什麼。

如何使用 PowerShell 預設參數來變更命令行為

要記住的事情

最重要的是要了解,為 PowerShell 預設參數添加新值是為了更改 cmdlet 的預設行為,而不是刪除 cmdlet 的功能。即使您將 Get-TimeZone cmdlet 變更為顯示可用時區而不是顯示目前時區也是如此。如果您查看更多,仍然可以顯示當前時區資訊。

您需要知道的另一件事是可以刪除自訂預設參數。若要刪除單一項目,請使用指令$PSDefaultParameterValues.Remove,後面接著要刪除的項目的名稱。例如:

$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)

相反,您可以使用以下命令刪除哈希表的全部內容:

$PSDefaultParameterValues.Clear();

您可以在下面查看這兩種技術的範例:

如何使用 PowerShell 預設參數來變更命令行為

您可以刪除整個雜湊表或刪除單一條目。

您不經常更改 cmdlet 命令的預設行為,但當您需要時,您已經知道如何更改它。

祝您成功!

看更多:


如何刪除 Windows 10 螢幕右上角的版權請求通知

如何刪除 Windows 10 螢幕右上角的版權請求通知

您是否在螢幕右上角看到 Windows 10 啟動通知?本文將指導您如何刪除Windows 10上的版權請求通知。

AZ 有關如何安裝 Windows 10 內部版本 14393.222 的說明

AZ 有關如何安裝 Windows 10 內部版本 14393.222 的說明

最近微軟為Windows 10 PC用戶發布了最新的累積更新,名為Build 14393.222。這次針對Windows 10發布的更新主要根據使用者回饋修復了Bug,並提升了作業系統的效能體驗。

只需 3 步驟即可使用 Bastion 主機保護您的電腦網絡

只需 3 步驟即可使用 Bastion 主機保護您的電腦網絡

您的本機網路上是否有需要外部存取的電腦?使用堡壘主機作為網路的看門人可能是一個很好的解決方案。

如果您的鍵盤無法使用,如何建立 Windows 鍵

如果您的鍵盤無法使用,如何建立 Windows 鍵

如果您喜歡使用舊的經典鍵盤,例如 IBM Model M,它不包含實體 Windows 鍵,那麼有一個簡單的方法可以添加更多按鍵,即藉用您不經常使用的鍵。

快速清除Windows 10中所有事件日誌的3種方法

快速清除Windows 10中所有事件日誌的3種方法

有時您可能需要一次刪除所有舊的事件日誌。在本指南中,Quantrimang.com 將向您展示 3 種快速刪除 Windows 10 事件檢視器中所有事件日誌的方法。

假IP方式幫助您匿名訪問

假IP方式幫助您匿名訪問

在之前的許多文章中,我們已經提到在線保持匿名非常重要。私人資訊每年都會被洩露,使得網路安全變得越來越必要。這也是我們應該使用虛擬IP位址的原因。下面,我們就來學習製作假IP的方法!

如何在 Windows 10 上建立透明背景模式

如何在 Windows 10 上建立透明背景模式

WindowTop 是一款能夠調暗 Windows 10 電腦上運行的所有應用程式視窗和程式的工具。或者您可以在 Windows 上使用深色背景介面。

如何關閉 Windows 8 工作列上的語言列

如何關閉 Windows 8 工作列上的語言列

Windows 8 上的語言列是一個微型語言工具列,旨在自動顯示在桌面螢幕上。然而,很多人想在工作列上隱藏這個語言欄。

如何為 Linksys 路由器設定 WEP、WPA、WPA2

如何為 Linksys 路由器設定 WEP、WPA、WPA2

無線連接是當今的必需品,因此,無線安全對於確保內部網路的安全至關重要。

Linksys 優化網路連線速度的技巧

Linksys 優化網路連線速度的技巧

最大限度地提高網路速度對於優化網路連線至關重要。您可以使用電腦、可上網的電視、遊戲機等獲得最佳的娛樂和工作體驗。