【发布时间】:2012-06-06 19:20:07
【问题描述】:
我目前正在将 VB 中的脚本重写为 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 等等
我很难弄清楚这一点。
【问题讨论】:
-
看看这里technet.microsoft.com/en-us/library/ff730949.aspx。这可以帮助您为用户选择添加一些 gui。
-
@Christian 我希望脚本用户能够输入一个数字(因为可能的用户将是一个编号列表),然后只需按 Enter 键即可获取数字,必须使用鼠标放慢速度。此脚本适用于 IT 服务台。
标签: windows powershell vbscript active-directory