1. 程式人生 > >設定PowerShell中的cmdlet引數預設值

設定PowerShell中的cmdlet引數預設值

今天我們來看下PowerShell中早在3.0版本的時候就引進的設定預設值功能。

$PSDefaultParameterValues主要是為Cmdlet和高階函式指定設定自定義值,下來讓我們通過幾個例子詳細看看具體如何使用。

我們可以使用如下基本語法為Cmdlet的預設值設定指定的預設值。

[email protected]{"<CmdletName>:<ParameterName>"="<DefaultValue>"}

下面的例子中,$PSDefaultParameterValues為Get-Process的Name屬性設定了一個預設值為notepad的值,當我們再次輸入Get-Process不配合任何引數,你將會看到它預設輸出了notepad的資訊。

PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = "notepad"}
PS C:\Users\Administrator> Get-Process

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     87       7     1368       5916 ...50     0.11   1204 notepad

當然我們不僅可以設定單純的預設值還可以以語句塊的方式去設定預設值,如下。

[email protected]{"<CmdletName>:<ParameterName>"={<ScriptBlock>}}

在這裡,我們做了一些特殊的修改,把一個表示式寫入語句塊裡並把這個得到的值再複製給Name屬性,輸出結果和上一個例子相同。

PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select -ExpandProp
erty processname}}
PS C:\Users\Administrator> Get-Process

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     87       7     1368       5916 ...50     0.11   1204 notepad

那麼如何檢視當前設定了哪些預設值呢?很簡單,直接輸入$PSDefaultParameterValues

PS C:\Users\Administrator> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Process:Name               (Get-Process -Id 1204)|select -ExpandProperty processname

那麼如果想要多次為$PSDefaultParameterValues預設值又改怎麼做呢,直接設定可以嗎?我們來試試看看:
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select processname
}}
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Content:Path" = "C:\XMLSample\New Text Document.txt"}
PS C:\Users\Administrator> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Content:Path               C:\XMLSample\New Text Document.txt
很顯然,當你在直接輸出$PSDefaultParameterValues的時候,它的值被最後一次的命令設定給覆蓋了,如果想要多次設定$PSDefaultParameterValues的預設值我們應該使用它的Add方法,如下:
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select processname
}}
PS C:\Users\Administrator> $PSDefaultParameterValues.Add("Get-Content:Path","C:\XMLSample\New Text Document.txt")
當我們再次輸出$PSDefaultParameterValues,你會看到它已經包含多了多個設定值了。
PS C:\Users\Administrator> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Process:Name               (Get-Process -Id 1204)|select processname
Get-Content:Path               C:\XMLSample\New Text Document.txt

關閉$PSDefaultParameterValues預設值功能,只需要設定它的 Disbaled 鍵值為$true就行了,即便當我們在如下例子中在使用Get-Process檢視的時候,它原先的預設值功能已經不起作用了,輸出了所有的資訊。
PS C:\Users\Administrator> $PSDefaultParameterValues.Add("Disabled", $true)
PS C:\Users\Administrator> $PSDefaultParameterValues

Name                           Value
----                           -----
Get-Process:Name               (Get-Process -Id 1204)|select processname
Get-Content:Path               C:\XMLSample\New Text Document.txt
Disabled                       True


PS C:\Users\Administrator> get-process

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    113      20    12408      16724 ...68     0.19   2756 calc
     54       9     1068       4620 ...17     0.03   1672 conhost
     42       7      792       3248 ...09     0.00   2224 conhost
     78      10     2320      18260 ...31     1.17   2996 conhost
    257      11     1780       3808    47     0.42    320 csrss
    327      25     2228      85032   246     8.36    388 csrss
    196      13     3256      10692 ...01     0.08   2032 dllhost
    306      51    95356     150892 ...92    11.81    688 dwm
   1455     118    53088     142576 ...11    34.67   2268 explorer
      0       0        0          4     0               0 Idle
    678      56    34128      62972   305     4.33   1640 iexplore


相關推薦

設定PowerShellcmdlet引數預設

今天我們來看下PowerShell中早在3.0版本的時候就引進的設定預設值功能。 $PSDefaultParameterValues主要是為Cmdlet和高階函式指定設定自定義值,下來讓我們通過幾個例子詳細看看具體如何使用。 我們可以使用如下基本語法為Cmdlet的預設值設

JavaScript函式引數預設設定

ES6中給出了函式的預設值設定,下面簡單介紹幾種設定預設引數的方法一.基本用法function first(x = 1, y = 2) {    console.log("x:"+x ,"y:"+ y);}first();first(100);二.與解構賦值預設值結合func

ES6小技巧 - 使用解構賦設定函式引數預設

本文要說的並不是下面這種ES6的函式引數預設值: function fn(a = 0, b = 1) {} 複製程式碼 很多時候,我們在寫一個建構函式時,可能需要傳入很多引數,這時候就不可能使用函式引數一個一個的傳入,而是傳入一個物件當作引數。 舉個例子:一個函式,引數傳入一個物件,物件裡可以設定兩個屬性

MySQL5.7的sql_mode預設

簡介 在正常專案開發過程中,如果MySQL版本從5.6升級到5.7版本。作為DBA在考慮資料庫版本升級帶來的影響時,一般會有幾個注意點: sql_mode 預設值的改變 optimizer_switch 值的改變 備庫升級影響主備複製 本文主要內容是MySQL升級到5.7版本之後,由於

JVM引數預設列表

[[email protected] ~]$ java -XX:+PrintFlagsFinal [Global flags] uintx AdaptiveSizeDecrementScaleFactor = 4

二、C#4.5語法新特徵-02(引數預設和命名引數)

一、引數修飾符型別 1 out 引數修飾符 out 引數通過引用來傳遞。 static void Method(out int i) { i = 44; } static void Main() { int value

ES6學習 --函式引數預設與解構賦預設

1. ES6的解構ES6中引入瞭解構賦值的操作,其作用是:將值從陣列Array或屬性從物件Object提取到不同的變數中 即分為兩種情況:從陣列Array中解構,以及從物件Object中解構 ①.從陣列中解構const [a, b] = [1, 2]//a = 1, b = 2當然這些是基本的陣列解構賦值

MySQL 5.7 和 MySQL 5.6引數預設比較

  這裡只拿出預設值有改變的引數,預設值沒有改變的不在下面的列表中。這些資料是通過 ” show global variables ;” 獲得,可能不是所有的引數。 引數 MySQL 5.6 MySQL 5.7

ES6引數預設

方式一: function makeAjaxRequest(url,method){ if(!method){//在METHOD沒有值的情況下為GET method = "GE

如何理解JavaScript引數傳遞

開始之前先說一下 ES 中的兩種資料型別的值:基本型別值和引用型別值。 基本資料型別:Undefined、Null、Boolean、Number、String。 引用資料型別的值是儲存在記憶體中的物件。與其他語言不同,JavaScript 不允許直接訪問記憶體中的位置,也就是說不能直

java 方法引數傳遞還是引用傳遞 ?

物件是引用傳遞,原始型別資料是值傳遞 實際上把方法引數中物件引數看做是物件的引用,那麼物件引用也是值傳遞 它符合值傳遞的一切的特徵,即我們可以通過物件引用的引數去改變它所指向物件的屬性,但我們卻無法改變這個物件引用引數所指向的物件。

Python函式引數預設的陷阱和原理深究 • cenalulu's Tech Blog

本文將介紹使用mutable物件作為Python函式引數預設值潛在的危害,以及其實現原理和設計目的 陷阱重現 我們就用實際的舉例來演示我們今天所要討論的主要內容。 下面一段程式碼定義了一個名為generate_new_list_with的函式。該函式的本意是在每次呼叫時都新建一個包含有給

java引數傳遞 傳遞,引用傳遞

引數是按值而不是按引用傳遞的說明 Java 應用程式有且僅有的一種引數傳遞機制,即按值傳遞。 在 Java 應用程式中永遠不會傳遞物件,而只傳遞物件引用。因此是按引用傳遞物件。Java 應用程式按引用傳遞物件這一事實並不意味著 Java 應用程式按引用傳遞引數。引數可以是物件引用,而 J

struts2怎麼設定s:radio的預設

<s:radio name="staffSex" list="#{'M':'男','F':'女'}" listKey="key" listValue="value" value="'M'"/>是字串就這樣:value="'M'"<s:radio name="

java引數傳遞-傳遞、引用傳遞

引數是按值而不是按引用傳遞的說明 Java 應用程式有且僅有的一種引數傳遞機制,即按值傳遞。 在 Java 應用程式中永遠不會傳遞物件,而只傳遞物件引用。因此是按引用傳遞物件。Java 應用程

關於如何獲取url引數

最近總是遇到這個問題,每次都要去百度,很麻煩,就做個記錄。 找了很久好像也沒有定義好的函式可以呼叫,需要自己定義一個函式,要用到的就是正則表示式,關於正則表示式就不多做解釋了。下面是定義函式的方法: function getUrlParam(name){  //構造一個

jquery擷取位址列url引數

//擷取位址列中url的引數值 function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&

在Hibernate對資料庫預設的寫入問題

如果在資料表中設定了一個欄位的預設值(比如說預設當前日期之類的),並且該欄位又不允許為空。如果是用Eclipse中的反向工程對該資料生成的POJO類和hbm.xml對映檔案,這時應該要修改對映檔案中的兩個地方才能正常使用資料庫中的預設值。 一是將dynamic-insert設定為true 二是將對應欄位

MySql和Oracle的建表即約束設定不同[日期型別的預設設定方式不同]

Oracle中 給日期時間設定預設值的方式:  CREATE TABLE "PHR"."T_UM_USERDETAIL" ( "PID" NVARCHAR2(128) NOT NULL , "USERID" NVARCHAR2(128) NULL , "PHOTOID" N

js函式引數預設的問題

在自定義的JS函式中想當然地為引數賦了預設值,如下: function addHeadQuaterTab(text, url, closable=true, refresh=true) {