我是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的情况下启动脚本时:
当我使用ISE启动脚本时,可以看到确认关闭后显示了我的结果。
我希望脚本显示信息,然后显示确认以关闭窗口。
答案 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-List
或Format-Table
时没有延迟,并且输出以正确的顺序显示。