2013-05-22 114 views
-2

讓我寫這個例子:我們正在部署一個我們希望調用命令運行時(例如Get-SPFeature)的過程,並且該命令接受一些您想要在過程中更改的選項你應該部署一些pkgs。 某些功能必須安裝在Web範圍中,其他位於Site Scope中,其他位於WebApplication範圍中。運行時的Powershell命令和選項

的想法是隻寫一個功能,可以幫助您選擇,在這裏檢查後啓用該功能:

function EnableFeatures ($features, $where, $url, $logFile) 

的$功能變量是功能,使列表中的數組。 $ url變量是這個特性應該在哪裏。 我們需要$在哪裏檢查變量,如果該功能啓用或不前,試圖使其在該範圍:

Get-SPFeature -Identity "my feature" -Webapplication/Site/Web "my url" 

我想什麼做的是EXEC我EnableFeatures函數,我需要做的變量這個檢查。

我該怎麼做?

+1

您如何稱呼您的'EnableFeatures'功能?我不明白你對'$ where'參數的使用 –

+0

EnableFeatures「feature of name」,「-Site」,「my url」,$ logFile –

回答

2

我認爲你只能使用散列表splatting,因爲你在變量中使用命名參數。

因此,這會導致:

Get-SPFeature -Identity $feature @{$where=$url}

Get-SPFeature @{Identity=$feature; $where=$url}

哦...你也可以這樣做:

Invoke-Expression "Get-SPFeature -Identity $feature $where $url"

但您的需求可能會很慢。

+0

只是爲了知識,我該如何使用一個沒有價值的選項。 ..像-Force選項? –

+1

@SalvatoreDiFazio'-Force'是'switch':它可以帶'$ true'或'$ false'。所以'@ {Force = $ true}'應該可以與splatting配合使用。用'Invoke-Expression'看起來微不足道。同時考慮澄清你最初的問題,因爲大多數人都不瞭解它 - 給予降薪的數量。 –

+0

我沒有,我希望現在更清楚 –