在尝试删除用户之前,我试图确定用户是否存在。我找到了这个命令并尝试将其实现到我的脚本中。但是我注意到,无论是否存在,该命令都将返回我输入的任何用户名。有人可以帮我解释一下使用这个脚本的正确方法,还是有人能告诉我一个更好的方法来确定用户是否存在?
[ADSI]::Exists("WinNT://Lotzi")
以下代码应该失败b / c Lotzi不是实际用户,但命令将返回true。
答案 0 :(得分:1)
以下是检查Active Directory中是否存在特定帐户的快速方法:
$accountName = "testname"
$searcher = [ADSISearcher] "(sAMAccountName=$accountName)"
$accountExists = $searcher.FindOne() -ne $null
答案 1 :(得分:0)
您不需要使用ADSI,这是旧的方式。嗯,你可以,但只是说。
使用PowerShell AD cmdlet?
# Get parameters, examples, full and Online help for a cmdlet or function
(Get-Command -Name Get-ADUser).Parameters
Get-help -Name Get-ADUser -Examples
Get-help -Name Get-ADUser -Full
Get-help -Name Get-ADUser -Online
(Get-Command -Name Get-ADComputer).Parameters
Get-help -Name Get-ADComputer -Examples
Get-help -Name Get-ADComputer -Full
Get-help -Name Get-ADComputer -Online
这就是他们存在的原因。现在您需要在工作站上下载并安装或只安装Windows RSAT工具......
...或远程控制域控制器以使用AD cmdlet。
如何在Windows 7中使用2012 Active Directory PowerShell Cmdlet https://blogs.technet.microsoft.com/ashleymcglone/2013/06/27/how-to-use-the-2012-active-directory-powershell-cmdlets-from-windows-7
然后就这样做......
$Users = 'TestUser001','TestUser001','TestUser001'
ForEach($User in $Users)
{
$User = $(try {Get-ADUser 'TestUser001'} catch {$null})
if ($User -ne $null) {
# Exists
} else {
# Doesn't Exist
Write-Warning -Message "User $User not found"
}
}
$Computers = 'Computer001','Computer001','Computer001'
ForEach ($Computer in $Computers)
{
$Computer = $(try {Get-ADUser 'TestUser001'} catch {$null})
if ($Computer -ne $null) {
# Exists
} else {
# Doesn't Exist
Write-Warning -Message "Computer $Computer not found"
}
}