【问题标题】:Powershell GUI combo boxPowershell GUI 组合框
【发布时间】:2019-10-28 17:02:04
【问题描述】:

问题出现在$groups 运行时 |其中成员-like $users 我不确定$users 是否是正确的变量,因为它无法输出文本框所需的内容。当我运行脚本时,除了用户名之外什么都没有出现,我还想查看用户所属的组。请帮忙。
函数结果WGroups () { $y = $GenTextbox.Text $SecondGenFormwGroups= 新对象 System.Windows.Forms.Form $SecondGenFormwGroups.Text='脚本' $SecondGenFormwGroups.Autosize=$true $SecondGenFormwGroups.StartPosition='centerscreen'

           $TexBoxwGroups= New-Object System.Windows.Forms.TextBox
           $TexBoxwGroups.Size= New-Object System.Drawing.Size(500,230)
           $TexBoxwGroups.Multiline= $true
           $TexBoxwGroups.text =''
           $TexBoxwGroups.ScrollBars='Vertical'
           $TexBoxwGroups.Location = New-Object System.Drawing.Point(20,140)

        $ListUsers = New-Object System.Windows.Forms.ComboBox
        $ListUsers.Width = 600



        $ListUsers.add_selectedindexchanged({$TexBoxwGroups.Text=$listusers.Text
        $Groups
        })
## searching for groups
## also the issue
        $Groups = Get-ADGroup -Properties * -Filter * -SearchBase "dc=example,dc=com" | where members   -like *$Users* | Select
      -Property Name
       ## searching for users
        $Users = Get-ADUser -filter * -SearchBase "dc=example,dc=com" |Select-String -Pattern $y

        Foreach ($User in $Users){
        $ListUsers.Items.Add($User)

        }

        $SecondGenFormwGroups.Controls.Add($TexBoxwGroups)
        $SecondGenFormwGroups.AllowDrop = $true
        $SecondGenFormwGroups.Controls.Add($ListUsers)
        $SecondGenFormwGroups.ShowDialog()

        }

## This is just the box with out the groups
         Function result (){
        $x = $GenTextbox.Text
        $SecondGenForm= New-Object System.Windows.Forms.Form
        $SecondGenForm.Text= 'Script'
        $SecondGenForm.Autosize=$true
        $SecondGenForm.StartPosition= 'centerscreen'
        $SecondGenForm.AutoScaleMode.value__.Equals(3)
        $ComboBox = New-Object System.Windows.Forms.ComboBox
        $ComboBox.Width = 600
        ##searching for users
        $Users = Get-ADUser -filter * -SearchBase "dc=example,dc=com" |Select-String -Pattern $x
        Foreach ($User in $Users){
        $ComboBox.Items.Add($User);
        }
        $SecondGenForm.Controls.Add($ComboBox)
        $SecondGenForm.ShowDialog()
        $SecondGenForm.Dispose()
         }
        Function search-aduser () {
        $GenForm= New-Object System.Windows.Forms.Form
        $GenForm.Text= 'Script'
        $GenForm.StartPosition= 'centerscreen'
        $GenForm.Size = New-Object System.Drawing.Size(300,200)
        ##
        $Username= New-Object System.Windows.Forms.Label
        $Username.Text= 'What is user name'
         $Groupschoice= New-Object System.Windows.Forms.Label 
        $Groupschoice.Location= New-Object System.Drawing.Point(90,65)
         $Groupschoice.Text= 'do you want groups'

        $GenTextbox= New-Object System.Windows.Forms.TextBox
        $GenTextbox.Location = New-Object System.Drawing.Point(10,40)
        $GenTextbox.Size = New-Object System.Drawing.Size(260,20)
         $GenTextbox.AcceptsReturn =$true
        $YesButton= new-object System.Windows.Forms.Button
        $YesButton.text = 'yes'
        $YesButton.Location = New-Object System.Drawing.Point(75,90)
        $YesButton.Size = New-Object System.Drawing.Size(50,20)
        $YesButton.add_click({resultwGroups})
        ##some buttons
        $NoButton= new-object System.Windows.Forms.Button
        $NoButton.text = 'no'
        $NoButton.Location = New-Object System.Drawing.Point(140,90)
        $NoButton.Size = New-Object System.Drawing.Size(50,20)
        $NoButton.add_click({result})
        ##bulding the form
        $GenForm.Controls.Add($Groupschoice)
        $GenForm.AcceptButton = $YesButton
        $GenForm.Controls.Add($YesButton)
        $GenForm.Controls.Add($NoButton)
        $GenForm.Controls.Add($GenTextbox)
        $Username.AutoSize=$true
        $Groupschoice.AutoSize=$true
        $GenForm.Controls.Add($Username)
        $GenForm.Controls.Add($GenTextbox.Select())
        $GenForm.ShowDialog()
        $GenForm.Dispose()
         }

【问题讨论】:

    标签: powershell combobox


    【解决方案1】:

    要获得用户的组成员资格,您需要使用Get-ADPrincipalGroupMembership

    最有效的方法是在使用组合框选择用户时解析该命令并在那时填充他们的组列表。

    类似这样的:

    Function resultWGroups () { 
    
        $y = $GenTextbox.Text
        $SecondGenFormwGroups= New-Object System.Windows.Forms.Form
        $SecondGenFormwGroups.Text= 'Script'
        $SecondGenFormwGroups.Autosize=$true
        $SecondGenFormwGroups.StartPosition= 'centerscreen'
    
        $TexBoxwGroups= New-Object System.Windows.Forms.TextBox
        $TexBoxwGroups.Size= '500,230'
        $TexBoxwGroups.Multiline= $true
        $TexBoxwGroups.text =''
        $TexBoxwGroups.ScrollBars='Vertical'
        $TexBoxwGroups.Location = '20,140'
    
        $ListUsers = New-Object System.Windows.Forms.ComboBox
        $ListUsers.Width = 600
    
        ## searching for users
        # test user
        $y = "john"
    
        $Users = Get-ADUser -LDAPFilter "(anr=$y)" -SearchBase 'OU=Standard Users,OU=Users,DC=company,DC=com' | Select Name, SamAccountName, DistinguishedName
    
        Foreach ($User in $Users){
            $ListUsers.Items.Add($User.DistinguishedName)
        }
    
        $ListUsers.add_selectedindexchanged({
            $TexBoxwGroups.Text=$listusers.Text
    # Find groups for selected user
            $UserGroups = Get-ADPrincipalGroupMembership -Identity ($listusers.Text) | Select Name
    # Append each group to textbox
            $UserGroups.Name | ForEach {
                $TexBoxwGroups.AppendText($_ + "`r`n")
            }
        })
    
        $SecondGenFormwGroups.Controls.Add($TexBoxwGroups)
        $SecondGenFormwGroups.AllowDrop = $true
        $SecondGenFormwGroups.Controls.Add($ListUsers)
        $SecondGenFormwGroups.ShowDialog()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多