Проверка существования имени пользователя Active Directory с использованием следующих условий

$lastname = "xyz"
$firstname = "abc"

$username = $lastname_$firstname -or $firstname.$lastname #error

В этой строке, как проверить эти условия?

$aduser = get-aduser -f samaccountname -eq $username
if($true){
    write-host "username exist"
}
else{
     write-host "user doesn't exist"
}

3 ответа

Решение

Если вы просто пытаетесь проверить, существует имя пользователя или нет, то вы должны проверить, $aduser не является $null,

Вам также необходимо указать sAMAccountName -eq для каждого условия, которое может быть выполнено. И вам также нужны кавычки вокруг фильтра.

$lastname = "xyz"
$firstname = "abc"

$aduser = Get-ADUser -f "sAMAccountName -eq '$($lastname)_$firstname' -or sAMAccountName -eq '$firstname.$lastname'"
if ($aduser -ne $null) {
    Write-Host "username exist"
} else {
    Write-Host "user doesn't exist"
}

Я не могу проверить это в данный момент, но если у вас есть только имя и фамилия, вы можете сделать что-то вроде этого:

$aduser = Get-ADUser -filter "(GivenName -eq $firstname) -and (Surname -eq $lastname)"
if ($aduser) {
    Write-Host "user exists"
} else {
    Write-Host "user doesn't exist"
}

Или объединить $firstname а также $lastname чтобы стать полным именем пользователя и попробуйте это:

$username = "$firstname $lastname"
$aduser = Get-ADUser -filter "Name -eq $username"
if ($aduser) {
    Write-Host "user exists"
} else {
    Write-Host "user doesn't exist"
}
try
{
     get-aduser -f samaccountname -eq $username
     Write-Output "Username $username exists"
}
catch
{
     Write-Output "Username $username does not exist"
}
Другие вопросы по тегам