我正在开发一个脚本,用于在PowerShell中禁用人们的AD帐户以及执行许多其他功能。
我希望脚本提供批量模式或单一模式选项。例如,只要运行脚本,就会强制执行一个参数,询问您是要在单模式还是批量模式下运行它。如果选择了批量模式,则应加载已定义的函数BULKmode
并导入csv。
如果选择单一模式,则它以单一模式运行并选择函数Singlemode
。
然而,PowerShell的问题是参数和函数都位于脚本的顶部。我已经尝试了两个命令和我在参数之前放置函数时收到的错误是
没有像param这样的术语
当我把参数放在第一位然后加载参数但是然后说
没有这样的功能
以下是摘录
Param(
[Parameter (Mandatory=$true)]
[String]$PressYforBulkMode)
If ($PressYforBulkMode -eq "Y") {
Bulkmode
}
Else {
Singlemode
}
答案 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
}