Powershell 混淆参数
需要帮助 我有一个相当难的问题,我想解决。 我有一个数组:Powershell 混淆参数,powershell,Powershell,需要帮助 我有一个相当难的问题,我想解决。 我有一个数组: @array = string, string, string 在我的例子中: yellow, red, blabla 我想使用数组中的这些字符串,并将它们放入一个带有额外if子句的commandlet中(很难解释,我最好演示一下),并在将它们添加到commandlet之前检查它们是否存在 $array = @() $array += "red" $array += "blabla" $command = write-host if
@array = string, string, string
在我的例子中:
yellow, red, blabla
我想使用数组中的这些字符串,并将它们放入一个带有额外if子句的commandlet中(很难解释,我最好演示一下),并在将它们添加到commandlet之前检查它们是否存在
$array = @()
$array += "red"
$array += "blabla"
$command = write-host
if ($array[0]) {$command = $command + " -foregroundcolor $array[0]"}
if ($array[1]) {$command = $command + " -object $array[1]"}
&$command
这显然行不通。问题是,我怎样才能将一个带有字符串的commandlet的某些参数组合在一起呢
我有另一个想法,但我想避免,因为它不会保持简单:
If (!$array[0]) {
(if (!$array[1]) {write-host "nodata"} else {write-host -object $array[1]})
else
(if (!$array[1]) {write-host -foregroundcolor $array[0]}
else {write-host -forgroundcolor $array[0] -object $array[1]})
}
已经有错误了。我想你要找的是。创建一个表示参数的名称/值对的哈希,并将其传递到cmdlet中。这提供了一种非常简单的方法,可以有条件地为cmdlet设置参数,而无需复制/粘贴在switch或嵌套if/else块中如何调用cmdlet的各种排列
$MyParms = @{};
$array = @()
$array += "red"
$array += "blabla"
if ($array[0]) {$MyParms.Add("foregroundcolor",$array[0])};
if ($array[1]) {$MyParms.Add("object",$array[1])};
Write-Host @MyParms;
我想你要找的是。创建一个表示参数的名称/值对的哈希,并将其传递到cmdlet中。这提供了一种非常简单的方法,可以有条件地为cmdlet设置参数,而无需复制/粘贴在switch或嵌套if/else块中如何调用cmdlet的各种排列
$MyParms = @{};
$array = @()
$array += "red"
$array += "blabla"
if ($array[0]) {$MyParms.Add("foregroundcolor",$array[0])};
if ($array[1]) {$MyParms.Add("object",$array[1])};
Write-Host @MyParms;
这是一个常见问题-“我想调用cmdlet,但根据各种编程条件,存在/缺少一些参数。”
标准的解决方案是将参数放在哈希表中,并使用
这是一个常见问题-“我想调用cmdlet,但根据各种编程条件,存在/缺少一些参数。”
标准的解决方案是将参数放在哈希表中,并使用
完全不清楚你在问什么,你的例子毫无意义。“混淆某些参数”是什么意思?很抱歉,我无法更清楚地了解我的问题。有时,作为一个非母语人士,很难就特殊编程问题提出有意义的问题。尽管我无法恰当地提问,但我已经得到了完美的答案。谢谢阅读。完全不清楚你在问什么,你的例子毫无意义。“混淆某些参数”是什么意思?很抱歉,我无法更清楚地了解我的问题。有时,作为一个非母语人士,很难就特殊编程问题提出有意义的问题。尽管我无法恰当地提问,但我已经得到了完美的答案。谢谢阅读。我愿意接受你的两个答案,但公平地说,一个越快得到批准。谢谢你的帮助和疯狂的速度!我想在几个小时后会有人回答这个问题。我想接受你的两个答案,但公平地说,一个得到批准的速度越快。谢谢你的帮助和疯狂的速度!我在想几个小时后会有人回答这个问题。
$array = @()
$array += "red"
$array += "blabla"
$params = @{}
if ($array[0]) { $params['foregroundcolor'] = $array[0] }
if ($array[1]) { $params['object'] = $array[1] }
write-host @params