2014-10-31 25 views
4

我最近開始使用PowerShell的,並注意到我可以使用參數名稱和值,或之間的空間中使用冒號傳遞的參數值,如:我應該使用冒號進行函數/腳本調用的所有參數嗎?

MyFunction -Parameter value 
or 
MyFunction -Parameter:value 

我開始使用冒號,因爲它區分(爲了可讀性的原因),但從我看到的情況來看,大多數人並沒有使用它。

我讀過一點關於differences between these approaches when working with switch typed arguments的內容,通常不需要數值。在這種情況下,需要使用冒號,否則命令將不起作用。出於一致性的原因,這是我傾向於將冒號用於每個參數的另一個原因。

有什麼我應該記住的?

+1

可能的[Powershell:Colon在命令行參數](http://stackoverflow.com/questions/8525572/powershell-colon-in-commandlet-parameters) – Matt 2014-10-31 13:09:13

+0

@Matt這根本不是重複的。我甚至在OP中鏈接了這篇文章。我完全意識到爲什麼在這種情況下使用它,我的問題是如果我應該採納它的所有論點或不是,真的。 – julealgon 2014-10-31 13:54:49

+1

我沒有遵循鏈接。標題是不同的。該帖子顯示了使用它的唯一真正原因。如果是這樣的話,這可能歸結爲意見。必須喜歡沒有其他人使用它的答案 – Matt 2014-10-31 13:59:59

回答

4

一般來說,當我需要執行一個switch參數設置爲false的函數時,我只需要省略這個開關。這是開關參數的設計意圖。我認爲我唯一會在參數中使用冒號的時候是需要以編程方式確定一個開關的值。

例如,讓我們說我需要一個普通的目錄清單上甚至數天,並在天奇遞歸目錄列表:

Get-ChildItem -Path $Path -Recurse:$((Get-Date).Day % 2 -eq 1) | ForEach-Object {...} 

除此之外,我個人不會用冒號,除非麻煩它顯着增加了給定語句的可讀性。這不是一個常用的語法,所以稍後閱讀你的代碼的人更容易被它所迷惑。

2

一般來說,我會離開結腸。只有在設置開關參數的情況下使用它(通常當你想傳遞一個變量時,如-Verbose:$someVariable

基本上,我認爲你應該與更接受的風格一致,這是我的。描述

如果你真的想所有參數設置中允許對交換機的參數變量內部一致的方式,並傳遞參數的接受(雖然不太爲人所知),考慮潑灑像這樣:

$params = @{ 
    'Param1' = $value1 
    'Param2' = 5 
    'WhatIf' = $true 
} 

Some-Cmdlet @params 
相關問題