脚本后Powershell运行命令

时间:2018-06-20 09:54:49

标签: powershell cmdlets

我是PowerShell的新手,我试图通过创建用于日常任务(获取用户名,重置密码和解锁帐户)的脚本来节省点击次数。

这是问题所在:启动脚本时,Powershell将执行除cmdlet之外的所有内容,并由它们完成。

例如,当我使用第一个选项(获取用户名)时,它将提示我“按Enter结束脚本”,然后显示我的GetUserName函数的结果。

请在下面找到我的代码:

# Author : Maxime
# Creation date :  20/06/2018
# Version : 0.1
Function GetUserName($name)
{
    $u = 'surname -like "' +$name+ '"'
    $res = Get-ADUser -Filter $u | select Name, GivenName, Surname
    return $res
}


echo "Menu"
echo "------"
$choix = read-host " 1. Trouver utilisateur par nom `n 2. Reset Password `n 3. Deverrouiller compte `nChoix  "


if($choix = 1)
{
    $name = Read-Host "Entrez nom utilisateur "
    GetUserName($name)

}
elseif( $choix = 2) 
{
    $id = Read-Host "Entrez ID"
    Set-ADAccountPassword $id -confirm -Reset
}
elseif ($choix -= 3)
{
    $id = Read-Host "Entrez ID "
    Unlock-ADAccount -Confirm $id
}
else
{
    echo "Mauvais choix"
}



read-host "Press enter to end the script ..."

编辑:

在不使用ISE的情况下启动脚本时:

enter image description here

当我使用ISE启动脚本时,可以看到确认关闭后显示了我的结果。

我希望脚本显示信息,然后显示确认以关闭窗口。

enter image description here

1 个答案:

答案 0 :(得分:2)

要确保在Read-Host出现提示之前显示输出,您可以使用:

$res = GetUserName($name)
$res | Format-Table

很可能与Select-Object函数的延迟(也报道了here)有关。

另一个选择是更改此行

$res = Get-ADUser -Filter $u | select Name, GivenName, Surname

$res = Get-ADUser -Filter $u | fl Name, GivenName, Surname

使用Format-ListFormat-Table时没有延迟,并且输出以正确的顺序显示。