共用方式為


Windows PowerShell:開展

將數個參數傳送至單一命令之前先包捆起來可節省時間,但前提是使用最新版本的 Windows PowerShell。

Don Jones

在 IT 產業的其他但無法在您使用的字,如"splatting"在嚴重的、 專業的內容中? 擋風玻璃修復,可能是,但不是許多其他地方。

Windows PowerShell 來說,splatting 會是一種將參數傳送至命令。 這是 Windows PowerShell 2.0 的新功能。 如果您正在仍然觸及,第 1 版的 (亦即因為您使用 Exchange Server 2007,需要它),然後這沒有用。

古方式

一般情況下,您可以藉由提供到它們的參數對命令列執行命令。 例如:

Get-WmiObject –computername SERVER-R2 –class Win32_LogicalDisk –filter "DriveType=3" –credential "Administrator"

您仍然可以執行,在 2.0 版的殼層,當然。 如果您不喜歡所有的輸入,您可以截斷的參數名稱。 只是請務必提供足夠的每個參數名稱,讓命令介面都能夠判斷您是哪一個參數。 這也是合法的:

Get-WmiObject –comp SERVER-R2 –cla Win32_LogicalDisk –filt "DriveType=3" –cred "Administrator"

當然還有仍然位置參數。 閱讀說明以取得 WmiObject,而且您會看到您可以使用 –class 參數中的第一個位置。 這表示您甚至不需要提供參數名稱,前提是它的值會在找到正確的位置:

Get-WmiObject Win32_LogicalDisk –comp SERVER-R2 –filt "DriveType=3" –cred "Administrator"

加上使用別名來取代指令程式名稱的功能,您可以得到真正無法讀取的命令列:

Gwmi Win32_LogicalDisk –comp SERVER-R2 –filt "DriveType=3" –cred "Administrator"

在類別,我告訴我可以在此輸入任何他們想要當對方使用殼層的學生。 畢竟,儲存您自己輸入儲存您的時間。 這是什麼殼層到底是怎麼。 但是,我也知道它們它們應該複製並貼到指令碼的命令。 它可以使用完整的指令程式的名稱和完整參數名稱。 這種方式能讓最終的指令碼易於閱讀。

某些商業的指令碼] 編輯器中,例如 SAPIEN PrimalScript 及任務 PowerGUI (包含免費外掛程式),甚至可以展開縮寫為完整版的指令程式或參數名稱。 這可協助您截斷較不費時費力的名稱。

新的方式

Splatting 是全新的方式將參數傳遞的命令。 若要藉由建立 hashtable,也稱為字典或關聯陣列。 Hashtable 是一系列金鑰 = 值組。 基本 hashtable 包含兩個索引鍵,每個都具有單一值。 它在 Windows PowerShell 外觀如下:

@{'key1'='value1';'key2'='value2'}

"@"符號開始將雜湊表,以大括號括住,看起來像這樣的:{ }. 每個金鑰 = 值組是從其他人以分號隔開。 在 splatting,索引鍵是參數名稱。 值是您想要傳送給這些參數的值。 在指令碼中,您甚至可以使用 hashtable 定義內換行以方便讀取在區塊:

$parms = @{'class'='Win32_BIOS';
        'computername'='SERVER-R2';
           'filter'='drivetype=3';
   'credential'='Administrator'
          }

若要沿著這些參數傳遞至命令,您會使用"@"一次。 這段時間,不過,它做為 splat 運算子。 可能是令人困惑,某一標點符號 ("@"符號) 可以有兩個不同的用途,但是它的運作方式:

Get-WmiObject @parms

您會發現這裡一點小技巧。 "@"符號後面跟著變數名稱,它並不包含錢幣符號。 這可能是值得的簡短說明。 它可以是人的陷阱主要"害"trips 佔據太多命令介面中。

在 Windows PowerShell 變數名稱是只是一系列的字母、 數字及底線。 通常可以有空格和其他的標點符號變數的名稱,但是它看起來醜陋。 變數名稱的前面錢幣符號會告訴殼層您不希望處理變數本身。 您想要處理它的內容。 如此 $var = 5 放置在名為時間差異的變數中的數字"5"

"@"符號,做為 splat 運算子,使用時沒有類似的畫面。 它說,"請任何字元進入下一步],並且假設它們是變數的名稱。 假設該變數包含 hashtable,而且索引鍵是參數名稱。 展開那些,及供給將雜湊表成這些參數值。可能聽起來 long-winded 的說明,但這是發生了什麼動作。

某些部門人員認為,尤其是在指令碼,這樣:

$parms = @{'class'='Win32_BIOS';
        'computername'='SERVER-R2';
           'filter'='drivetype=3';
           'credential'='Administrator'
          }
Get-WmiObject @parms

看起來會比這個更好:

Get-WmiObject –computername SERVER-R2 –class Win32_LogicalDisk –filter "DriveType=3" –credential "Administrator"

它一定是一種個人的喜好設定。 很容易地查看 splatting 方法的引數。 您的參數,名稱和值,能夠恰好置入都位於單一特別色。 您可以格式化它們,讓它們對齊] 將啟動並查看勻稱和 orderly ("簡潔有力且整齊有序 「 為我的類別的重大主題)。

因此的下次您正要將命令放置在指令碼中,請考慮 splatting。 如果沒有其他它聽起來真的很酷。

Don Jones

Don Jones 是一 WindowsPowerShell MVP、 作者和訓練師。ConcentratedTech.com,其也包含了有關他類別和會議的外觀。

資訊看板:在視訊上的 Windows PowerShell

本月的文章都有小幫手視訊可用在 的額外雜誌-集中技術. 您也可以找到其他的可用 Windows PowerShell 視訊,在 YouTube-ConcentratedDon 的通道.

若要註冊 Don Jones 的即時、 獨占、 可提供實務三天 Windows PowerShell 研討會與 TechMentor 彈簧 2011年一起共置執行時間。 請造訪 TechMentorEvents.com 如需詳細資訊。

相關的內容