Powershell-基于dropdown.text值获取广告用户信息

Powershell-基于dropdown.text值获取广告用户信息,powershell,drop-down-menu,active-directory,ldap,Powershell,Drop Down Menu,Active Directory,Ldap,我的朋友们 我已经尽力在点击按钮时处理LDAP查询,但是我可以使用dropdown2.text来搜索一个名称,而不是使用像“smith,peter”这样的完整名称 我想要的是,如果我在“管理器”字段中输入名字或姓氏,单击按钮将搜索并返回Active Directory事件中的所有对应值(如果是姓名或姓氏)。我不远,但我找不到哪里是我的错 function GenerateForm { set-Location c:\ add-PSSnapin quest.activeroles.admana

我的朋友们

我已经尽力在点击按钮时处理LDAP查询,但是我可以使用dropdown2.text来搜索一个名称,而不是使用像“smith,peter”这样的完整名称

我想要的是,如果我在“管理器”字段中输入名字或姓氏,单击按钮将搜索并返回Active Directory事件中的所有对应值(如果是姓名或姓氏)。我不远,但我找不到哪里是我的错

function GenerateForm {

set-Location c:\
add-PSSnapin  quest.activeroles.admanagement

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null

$form1 = New-Object System.Windows.Forms.Form
$searchldap = New-Object System.Windows.Forms.Button
$DropDownLabel = new-object System.Windows.Forms.Label
$DropDownLabel2 = new-object System.Windows.Forms.Label
$DropDown = new-object System.Windows.Forms.ComboBox
$DropDown2 = new-object System.Windows.Forms.ComboBox

#Handler 
$handler_searchldap_click= 
{
    $manager = ""
    $dropdown2.items.clear()
    $manager = get-aduser  -f {name -like $dropdown2.text}
    foreach ($thing in $manager){
        $useraccountname = $thing.name
        $DropDown2.Items.Add($useraccountname) | Out-Null
    }
}




$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
    $form1.WindowState = $InitialFormWindowState
}

#----------------------------------------------
#region Generated Form Code
$form1.Text = "User Creation software"
$form1.Name = "form1"
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 400
$System_Drawing_Size.Height = 200
$form1.ClientSize = $System_Drawing_Size

$DropDownArray = "Site1" , "Site2" , "Site3"

$DropDown2.Location = new-object System.Drawing.Size(125,80)
$DropDown2.Size = new-object System.Drawing.Size(150,27)
$dropdown2.DataBindings.DefaultDataSourceUpdateMode = 0
$dropdown2.TabIndex = 5
$dropdown2.Name = "dropdown2"
$DropDown2.add_TextUpdate({ Write-Host "TextUpdate. Updated text is: $($Dropdown2.Text)" })
$Form1.Controls.Add($DropDown2)

$DropDownLabel2 = new-object System.Windows.Forms.Label
$DropDownLabel2.Location = new-object System.Drawing.Size(50,80)
$DropDownLabel2.size = new-object System.Drawing.Size(50,27)
$DropDownLabel2.Text = "Manager:"
$Form1.Controls.Add($DropDownLabel2)

$DropDown.Location = new-object System.Drawing.Size(125,55)
$DropDown.Size = new-object System.Drawing.Size(150,27)
$dropdown.DataBindings.DefaultDataSourceUpdateMode = 0
$dropdown.TabIndex = 4
$dropdown.Name = "dropdown1"

$DropDownLabel = new-object System.Windows.Forms.Label
$DropDownLabel.Location = new-object System.Drawing.Size(50,58)
$DropDownLabel.size = new-object System.Drawing.Size(50,27)
$DropDownLabel.Text = "Location:"

$Form1.Controls.Add($DropDown)
$Form1.Controls.Add($DropDownLabel)

ForEach ($Item in $DropDownArray) {
$DropDown.Items.Add($Item) | Out-Null
}

###Button section

$searchldap.Location = New-Object System.Drawing.Size(275,80)
$searchldap.Size = New-Object System.Drawing.Size(100,20)
$searchldap.Text = "Search"
$searchldap.Add_Click($handler_searchldap_click)

$Form1.Controls.Add($searchldap)

#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null
} #end of function
GenerateForm
试试这个:

$filter = [scriptblock]::Create("Name -like '*$($dropdown2.text)*'")
$manager = get-aduser  -f $filter

Powershell在将筛选器脚本块中使用的局部变量传递给DC(通过AD网关服务)之前,不会展开它们。要解决这个问题,请从可扩展字符串创建筛选器脚本块

我不熟悉quest cmdlet。您是否尝试过搜索:
Get ADUser-DisplayName“*$($dropdown2.text)*“
?这个问题取决于您在广告中使用的字段,但是
displayname
通常是像“Lastname FirstName”一样的全名@Graimer
get-aduser
不是Quest cmdlet,而是
get-qaduser
是..;)这是他的第一个错误,因为他加载了quest管理单元,而不是microsoft的广告模块:PHo我的模块被加载了,抱歉,这是我发布的“测试”脚本。在我的完整脚本中,模块已加载感谢各位的时间伙伴,非常感谢。每次你花时间给我解释一些事情,我都在学习。祝你周末愉快。谢谢,这是我需要读的东西。但它像一个魅力。谢谢