PowerShell问题 - 使用带参数的函数

时间:2017-07-21 15:44:25

标签: function powershell parameters

我正在开发一个脚本,用于在PowerShell中禁用人们的AD帐户以及执行许多其他功能。

我希望脚本提供批量模式或单一模式选项。例如,只要运行脚本,就会强制执行一个参数,询问您是要在单模式还是批量模式下运行它。如果选择了批量模式,则应加载已定义的函数BULKmode并导入csv。

如果选择单一模式,则它以单一模式运行并选择函数Singlemode

然而,PowerShell的问题是参数和函数都位于脚本的顶部。我已经尝试了两个命令和我在参数之前放置函数时收到的错误是

  

没有像param这样的术语

当我把参数放在第一位然后加载参数但是然后说

  

没有这样的功能

以下是摘录

Param(
[Parameter (Mandatory=$true)]
[String]$PressYforBulkMode)

If ($PressYforBulkMode -eq "Y") {
Bulkmode
}

Else {
Singlemode
}

2 个答案:

答案 0 :(得分:1)

最好的解决方案是拆分你的功能,这样你就可以使用循环来使用完成实际工作的功能。

这样做的方法是将您的信息作为数组传递给main函数。如果您有一个条目或许多条目,它就不重要了。然后使用foreach遍历数组并调用实际禁用AD帐户的函数以及所需的任何其他操作。

这意味着你不必检查批量'或者'单身'模式。它会起作用。

示例:

function MainFunction
{
param (pass in array here)

    foreach(entry in $myArray)
    {
        DoWork $entry
    }
}

function DoWork
{
    //do things here
}

答案 1 :(得分:0)

似乎您想提示用户输入。 我更喜欢使用参数,但如果你想提示输入,试试这个:

Function BulkMode
{
    "Running BulkMode"
}

Function SingleMode
{
    "Running SingleMode"
}


$Input = Read-Host "Press Y for BulkMode"

if ($Input -eq "Y")
{
    Bulkmode
}

else
{
    SingleMode
}