执行“Get-ADUser -Identity”时处理两个 AD 名称

问题描述 投票:0回答:1

我是 Povershell 的新手。我正在创建一个脚本来从 Winform 获取有关 AD 用户的数据。我按名称选择用户,因为这样更方便。但 Active Directory 包含相同的名称,并且脚本会引发错误。遇到这种情况该如何处理?

$Users = Get-ADuser -filter * -Properties Name
Foreach ($User in $Users)
{
$ComboBox1.Items.Add($User.Name)
}
function Button1_Click()
{
$script:user1 = $ComboBox1.SelectedItem
$script:selected_user = (get-aduser -ldapfilter "(displayname=$user1)" -property samaccountname | select-object -property samaccountname).samaccountname 
write-host $selected_user
if ((Get-ADUser -Identity $selected_user).Enabled)
{
 $Label6.Text = ''
 $Label6.Forecolor = 'Green'
 $Label6.Text = 'User enabled'
}
else
{
 $Label6.Text = '' 
 $Label6.Forecolor = 'Red'
 $Label6.Text = 'User disabled'
}
}
powershell active-directory
1个回答
0
投票

您的代码的问题是第二次调用

Get-ADUser
,它不是必需的,可以删除。如果您想处理该错误,可以使用
try
/
catch
语句
,但同样,在这种情况下并不需要。

您已经使用

LDAPFilter
查询用户,这不会产生任何错误 除非
$user1
为 null 或为空
,因此您可以简单地删除
.SamAccountName
的扩展并按原样使用该对象:

function Button1_Click() {
    $script:user1 = $ComboBox1.SelectedItem
    $script:selected_user = Get-ADUser -LDAPFilter "(displayname=$user1)"
    Write-Host $selected_user
    if (-not $selected_user) {
        # here is for user couldn't be found with that displayName
    }
    elseif ($selected_user.Enabled) {
        $Label6.Text = ''
        $Label6.Forecolor = 'Green'
        $Label6.Text = 'User enabled'
    }
    else {
        $Label6.Text = ''
        $Label6.Forecolor = 'Red'
        $Label6.Text = 'User disabled'
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.