我目前正在将VB中的脚本重写到Powershell脚本中。Active Directory和Powershell
脚本的功能是根据脚本用户输入为用户搜索我们的Active Directory。
Function PromptForName{
$nameInput = "*"
$nameInput += Read-Host ("Please enter a full or partial name.")
$nameInput += "*"
return $nameInput
}
Function FindUsers{
param ([string]$n)
$usersArray = Get-ADUser -f {DisplayName -like $n} | Select-Object Name
return $usersArray
}
此代码将打印出正确的名称列表。然后,我想要做的是让用户选择其中一个名称,并获得有关该人的更多信息。我被困在允许脚本用户选择其中的一个名称。
如何提示输入其他信息;该框中将显示FindUsers给出的所有名称的编号列表,然后根据他们选择的用户返回一个数字?我完全失去了。
这是目前我正在努力做到这一点,虽然我很确定它是完全错误的。
Function PrintUsers{
param $a
[int]$i, $j
[string]$userList
$j = 1
foreach($object in $array){
$userList += ($j + $array[$i])
$j++
}
return $userList
}
Function SelectUser{
param $list
$user = Read-Host ($list)
}
编辑:
我已经更新我的功能如下:
Function FindUsers{
param ([string]$n)
$usersArray = @(Get-ADUser -f {DisplayName -like $n} | Select-Object Name| Format-List)
return $usersArray
}
Function PrintUsers{
param ([String[]]$array)
$i
for($i = 1; $i -lt $usersArray.length; $i++){
Write-Host "$i. $($usersArray[$i-1].Name)"
}
}
FindUsers后的输出是这样的: 名称:XXXXX YYYYY 名称:XXXXX ZZZZZ 等等
所以返回$ usersArray正在打印所有这些。 我不希望任何打印,直到PrintUsers功能,我想它是在这样一个编号列表格式类型: 1. XXXX YYYY 2. XXXX ZZZZ 等
我具有最困难的时候弄清楚这一点。
看看这里http://technet.microsoft.com/en-us/library/ff730949.aspx。这可以帮助您为用户选择添加一些gui。 –
@Christian我希望脚本用户能够输入一个数字(因为可能的用户将会是一个编号列表),然后只需按回车即可获得该号码,不得不使用鼠标会减慢速度。该脚本用于IT中的帮助台。 – CallumStyan