根据用户输入加载脚本

时间:2016-08-29 10:36:22

标签: powershell scripting

嗨,我对整个脚本场景相当新,并希望有人可以帮助我。我创建了一个菜单,根据用户输入将提示回复,但我需要这样做,如果你按“1”它将加载另一个脚本到这个脚本等等 我目前的代码是:

function Show-Menu
{
     param (
           [string]$Title = 'Menu'
     )
     cls
     Write-Host "           $Title          "

     Write-Host "1: Tast '1' for at oprette OU"
     Write-Host "2: Tast '2' For at oprette grupper"
     Write-Host "3: Tast '3' For at importere brugere i grupper"
     Write-Host "4: Tast '4' For at eksportere brugerlister til CSV"
     Write-Host "5: Tast '5' For at slette brugere"
     Write-Host "6: Tast '6' For at ændre password"
     Write-Host "Q: Tast 'X' For at afslutte."
}
do
{
     Show-Menu
     $input = Read-Host "Please make a selection"
     switch ($input)
     {
           '1' {
                cls
                'Du valgte Nummer #1'
           } '2' {
                cls
                'Du valgte Nummer #2'
           } '3' {
                cls
                'Du valgte Nummer #3'
                } '4' {
                cls
                'Du valgte Nummer #4'
                } '5' {
                cls
                'Du valgte Nummer #5'
                } '6' {
                cls
                'Du valgte Nummer #6'

           } 'q' {
           cls
           'Afslutter nu'
                return
           }
     }
     pause
}
until ($input -eq 'q')

有关如何将脚本加载到此脚本中的任何提示

  • 菲利普

1 个答案:

答案 0 :(得分:1)

首先,不要将input用作变量名称 - $inputautomatic variable,您最终可能会通过尝试覆盖它来看到一些奇怪和意外的行为

对于" loading"脚本,使用dot sourcing method,如下所示:

. C:\path\to\script.ps1

以上将在调用范围内执行script.ps1,因此脚本中的所有变量和函数定义都可以在以下字段后使用:

do
{
     Show-Menu
     $choice = Read-Host "Please make a selection"
     switch ($choice)
     {
        '1' {
            cls
            'Du valgte Nummer #1'
            . C:\path\to\script1.ps1
        } 
        '2' {
            cls
            'Du valgte Nummer #2'
            . C:\path\to\script2.ps1
        } 
        '3' {
            cls
            'Du valgte Nummer #3'
            . C:\path\to\script3.ps1
        } 
        # og så videre ...
        } 
        'q' {
            cls
            'Afslutter nu'
                return
        }
     }
     pause
}
until ($choice -eq 'q')

最后,你可能想要在输出中只选择丹麦语或英语文本,但这更让我感到厌烦: - )