Bensp1234 Posted October 4, 2016 Posted October 4, 2016 (edited) Hello everyone, I am trying to make a program inside of power shell/powershell studio that lets teachers be able to change students passwords pulling the information from AD. So far I have managed to make AD pull information into my GUI and display the information however I am struggling to get a working search box inside of power shell studio to work pulling information from AD. As well as this I am struggling to get the program to only search from inside one OU rather than how it is at the moment where it is pulling from the entire root directory. The source document for powershell studio is here: password reset.zip Other wise the code is as follows: Mainform.psf $MainForm_Load={ #TODO: Initialize Form Controls here } $buttonCallChildForm_Click={ #TODO: Place custom script here if((Call-ChildForm_psf) -eq 'OK') { } } $A_Click={ #TODO: Place custom script here $buttona.text = "A" $users = Get-ADUser -f { surname -like 'A*' } Load-ListBox -Listbox $listbox1 -DisplayMember name -Items $users #TODO: Place custom script here } #region Control Helper Functions function Load-ListBox { <# .SYNOPSIS This functions helps you load items into a ListBox or CheckedListBox. .DESCRIPTION Use this function to dynamically load items into the ListBox control. .PARAMETER ListBox The ListBox control you want to add items to. .PARAMETER Items The object or objects you wish to load into the ListBox's Items collection. .PARAMETER DisplayMember Indicates the property to display for the items in this control. .PARAMETER Append Adds the item(s) to the ListBox without clearing the Items collection. .EXAMPLE Load-ListBox $ListBox1 "Red", "White", "Blue" .EXAMPLE Load-ListBox $listBox1 "Red" -Append Load-ListBox $listBox1 "White" -Append Load-ListBox $listBox1 "Blue" -Append .EXAMPLE Load-ListBox $listBox1 (Get-Process) "ProcessName" #> Param ( [ValidateNotNull()] [Parameter(Mandatory=$true)] [system.Windows.Forms.ListBox]$ListBox, [ValidateNotNull()] [Parameter(Mandatory=$true)] $Items, [Parameter(Mandatory=$false)] [string]$DisplayMember, [switch]$Append ) if(-not $Append) { $listBox.Items.Clear() } if($Items -is [system.Windows.Forms.ListBox+ObjectCollection] -or $Items -is [system.Collections.ICollection]) { $listBox.Items.AddRange($Items) } elseif ($Items -is [system.Collections.IEnumerable]) { $listBox.BeginUpdate() foreach($obj in $Items) { $listBox.Items.Add($obj) } $listBox.EndUpdate() } else { $listBox.Items.Add($Items) } $listBox.DisplayMember = $DisplayMember } #endregion $buttonB_Click={ #TODO: Place custom script here $buttonB.text = "B" $users = Get-ADUser -SearchBase "ou=Student" -f { surname -like 'B*' } Load-ListBox -Listbox $listbox1 -DisplayMember Name -Items $users } globals.sp1 #-------------------------------------------- # Declare Global Variables and Functions here #-------------------------------------------- #Sample function that provides the location of the script function Get-ScriptDirectory { <# .SYNOPSIS Get-ScriptDirectory returns the proper location of the script. .OUTPUTS System.String .NOTES Returns the correct path within a packaged executable. #> [OutputType([string])] param () if ($hostinvocation -ne $null) { Split-Path $hostinvocation.MyCommand.path } else { Split-Path $script:MyInvocation.MyCommand.Path } } #Sample variable that provides the location of the script [string]$ScriptDirectory = Get-ScriptDirectory Edited October 4, 2016 by Bensp1234
protocol Posted October 4, 2016 Posted October 4, 2016 I can't help with any of your coding but have you not thought about just delegating control of the Students OU in AD to selected staff? Just link it to a security group and put a shortcut on their desktop. That's what I done here and works well.
Bensp1234 Posted October 5, 2016 Author Posted October 5, 2016 Hello protocol, thanks for the reply, We tired that here before unfortunately we found that teacher able to access the AD was a bad idea as they where accidentally deleting students and changing details other than passwords that did not need to be changed.
rush_tech Posted October 5, 2016 Posted October 5, 2016 Not if you only delegate 'reset user password and force password change at next logon' at a minimum you should be good
LeMarchand Posted October 5, 2016 Posted October 5, 2016 Are you doing this because you want to improve your scripting skills, or just to get the job done? If the latter there are a few ways discuseed here: http://www.edugeek.net/forums/learning-network-manager/169211-user-password-reset.html
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now