从模块传递参数

时间:2019-05-29 05:25:11

标签: powershell

我需要帮助,以了解如何从导入的模块传递参数。

模块包含一些自定义参数,例如-one,-two,-three

我正在尝试使用模块中的命令制作GUI。 例如。如果从下拉菜单中选择“一个”,则通过-one命令。

但是,当我这样做时(使用下面的示例),我得到一个错误:“找不到一个接受参数'-one'的位置参数。”

我可以看到,使用下面的代码,它在命令周围添加了单引号,这可能会破坏它。

我知道我可以运行IF语句(例如,如果combobox.text =“ one”,请执行此操作),但是我宁愿使用变量,而不必执行多个if语句或循环。使用变量似乎是一个更简单的选择。

我正在学习这种语言,所以我还没有足够的知识:)

感谢您的帮助。希望这有道理。


$variable = $comboboxNumbers.Text
#example One is selected from the dropdown

Custom-ADCommand -identity "username" $variable

2 个答案:

答案 0 :(得分:0)

下面是简单的示例方法:

    function Set-SwitchParams {
        [CmdletBinding()]
        param (
            # Parameter help description
            [Parameter(Mandatory = $false)]
            [switch]
            $SwitchA,
            [Parameter(Mandatory = $false)]
            [switch]
            $SwitchB
        )

        begin {
        }

        process {
        }

        end {
            if ($SwitchA){
                Write-Host "SwitchA is activated"
            }
            if ($SwitchB){
                Write-Host "SwitchB is activated"
            }
        }
    }

将方法放入PS1文件中,例如SwitchPlayground.ps1。然后通过以下方式在PowerShell中获取文件:

  . .\SwitchPlayground.ps1

随后,您可以使用以下命令进行操作,例如:

 Set-SwitchParmas -SwitchA

我建议研究以下链接:

希望有帮助。

答案 1 :(得分:0)

If语句可能更好,但是可以创建一个字符串,然后在powershell中执行该字符串。

作为一个简单的例子,使用此字符串

$string = '@("test","hello","whats up")'

然后我可以执行它并使用它来创建一个数组

$array = invoke-expression $string

将使用“ test”,“ hello”和“ whats up”创建一个数组,并将其存储在$array

PS C:\temp> $string = '@("test","hi","what")' PS C:\temp> $array = Invoke-Expression $string PS C:\temp> $array test hi what