powershell变量的内联扩展为cmdlet参数?

lar*_*ryq 2 parameters powershell arguments cmdlet

调用cmdlet时,是否可以以某种方式扩展powershell变量的值,以便它充当cmdlet的参数(具有关联值)?

这是我正在尝试的一个例子:

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


Invoke-Sqlcmd -ServerInstance "$SERVER_NAME" -Query "$SQL_STATEMENT" "$CREDENTIALED_SECTION" -Database "$DATABASE"
Run Code Online (Sandbox Code Playgroud)

当Invoke-Sqlcmd运行时出现问题.它告诉我,找不到接受"-Username my username-Password my password" 的位置参数所以它正在扩展变量但没有正确地将它作为一组参数发送.有没有办法做我在这里尝试的事情?

Kei*_*ill 7

您可以使用哈希表将这样的参数传递给PowerShell命令,例如:

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

Invoke-Sqlcmd -ServerInstance $SERVER_NAME -Query $SQL_STATEMENT @CREDENTIALED_SECTION -Database $DATABASE
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,不必引用PowerShell变量.您还需要在命令调用中使用splatting语法,例如@<hashtable_with_parameter_name_value_pairs>.