2012-09-13 22 views
2

調用cmdlet時,是否有可能以某種方式擴展powershell變量的值,以便充當cmdlet的參數(以及關聯的值)?作爲cmdlet參數內聯擴展powershell變量?

這裏是我想要一個例子:當調用-SQLCMD運行

$CREDENTIALED_SECTION = "-Username $USER_NAME -Password $PASSWORD" 
. 
. 
. 


Invoke-Sqlcmd -ServerInstance "$SERVER_NAME" -Query "$SQL_STATEMENT" "$CREDENTIALED_SECTION" -Database "$DATABASE" 

的問題就來了。它告訴我一個位置參數找不到接受「-Username my username -Password my password」所以它擴大了變量,但沒有正確地將它作爲一組參數發送。有沒有辦法做我在這裏嘗試的?

回答

7

您可以使用哈希表來代替例如爲:

$CREDENTIALED_SECTION = @{Username=$USER_NAME; Password=$PASSWORD} 

Invoke-Sqlcmd -ServerInstance $SERVER_NAME -Query $SQL_STATEMENT @CREDENTIALED_SECTION -Database $DATABASE 

請注意,這不是在這種情況下,必須引用PowerShell的變量傳遞這樣的參數到PowerShell命令。您還需要在命令調用中使用splatting語法,例如@<hashtable_with_parameter_name_value_pairs>