Powershell 如何提示用户输入正确的部门名称并根据Active Directory进行验证
我使用以下脚本是为了获得广告中特定部门的用户。脚本本身工作正常,但我想完成两件事:Powershell 如何提示用户输入正确的部门名称并根据Active Directory进行验证,powershell,active-directory,powershell-3.0,powershell-4.0,Powershell,Active Directory,Powershell 3.0,Powershell 4.0,我使用以下脚本是为了获得广告中特定部门的用户。脚本本身工作正常,但我想完成两件事: 为确保用户不能将部门名称留空 要验证Active Directory中是否存在部门名称,如果不存在,则提示用户验证名称并输入正确的名称 您可以从广告中提取部门列表,如下所示: $departments = Get-ADUser -Filter * -Property Department | Where-Object { $_.Department } |
您可以从广告中提取部门列表,如下所示:
$departments = Get-ADUser -Filter * -Property Department |
Where-Object { $_.Department } |
Select -Expand Department -Unique
do {
$Dept = Read-Host "Enter the desired department"
} until ($departments -contains $Dept)
通过该列表,您可以如下方式验证用户输入:
$departments = Get-ADUser -Filter * -Property Department |
Where-Object { $_.Department } |
Select -Expand Department -Unique
do {
$Dept = Read-Host "Enter the desired department"
} until ($departments -contains $Dept)
$Dept-和
是不必要的,读取主机
将始终返回字符串如果用户通过按Ctrl-C中断读取主机
,变量将保留其以前的值($null
,如果之前未分配值)。但是,即使这样,-contains
操作也会自行工作,因此这里不需要附加子句是正确的。修好了。嗨,谢谢你的帮助。我还有一个与此相关的问题。如果我运行您的脚本,它将按以下方式超时:Get ADUser:此操作返回,因为第5行的超时时间已过期:char:15+$colResults=Get ADUser-LDAPFilter$strFilter |+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:未指定(:)[Get ADUser],ADException+FullyQualifiedErrorId:此操作返回,因为超时时间已过,Microsoft.ActiveDirectory.Management.Commands。GetADUser@GeorgeMihailescu如果您有新问题:请发布新问题。您将如何将脚本分发给用户?由于您使用的是ActiveDirectory模块,因此需要在运行此脚本的所有计算机上安装此模块(因此需要在所有这些计算机上安装RSAT)。对于需要在用户上下文中运行而不需要RSAT的脚本,您需要深入到.NET(System.DirectoryServices)