Перейти к содержимому
Обложка сообщества Разное

Сила PowerShell

Я не очень хороший программер, но порой лень требует автоматизации.

Простой PowerShell скрипт, который позволяет без доступа r консоли Active Directory Users and Computers ресетить пароли пользовательским аккаунтам AD.

Для его работы необходим ActiveRoles Management Shell for Active Directory (можно взять тут http://www.quest.com/powershell/activeroles-server.aspx )

Может кому пригодится :)

Думаю интерфейс в объяснении не нуждается.

 

 

 

add-PSSnapin  quest.activeroles.admanagement

# Load the Winforms assembly
[void][reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# Create the form
$form = New-Object Windows.Forms.Form

#Set the dialog title
$form.text = "Reset Password Tool"
$form.Font = "Verdana"
$form.Size = New-Object System.Drawing.Size(370,350)
$form.StartPosition = "CenterScreen"

# Enter User Name label
$labelUser = New-Object Windows.Forms.Label
$labelUser.Location = New-Object Drawing.Point 20,20
$labelUser.Size = New-Object Drawing.Point 200,20
$labelUser.text = "Enter User Name"

# TextBox with username
$textusername = New-Object Windows.Forms.TextBox
$textusername.Location = New-Object Drawing.Point 20,40
$textusername.Size = New-Object Drawing.Point 200,30

# Button "Find"
$buttonFind = New-Object Windows.Forms.Button
$buttonFind.text = "Find User"
$buttonFind.Location = New-Object Drawing.Point 230,40
$buttonFind.Size = New-Object Drawing.Point 100,20

# Search results label
$labelSearch = New-Object Windows.Forms.Label
$labelSearch.Location = New-Object Drawing.Point 20,70
$labelSearch.Size = New-Object Drawing.Point 200,20
$labelSearch.text = "Results:"

# Search results ListBox
$ResultsList = New-Object Windows.Forms.ListBox
$ResultsList.Location = New-Object Drawing.Size 20,90
$ResultsList.Size = New-Object Drawing.Size 200,20
$ResultsList.Height = 80

# "Change on next logon" checkbox
$mustchange = New-Object Windows.Forms.CheckBox
$mustchange.Location = New-Object Drawing.Point 20,160
$mustchange.Size = New-Object Drawing.Point 200,30
$mustchange.text = "user must change password at next logon"
$mustchange.Checked = $true

# Reset Password button
$buttonChange = New-Object Windows.Forms.Button
$buttonChange.text = "Reset Password"
$buttonChange.Location = New-Object Drawing.Point 230,90
$buttonChange.Size = New-Object Drawing.Point 100,70

# Shows result
$labelResult = New-Object Windows.Forms.Label
$labelResult.Location = New-Object Drawing.Point 20,200
$labelResult.Size = New-Object Drawing.Point 200,100

$buttonFind.add_click({

$ResultsList.Items.Clear()
if ($textusername.text -eq "")
{
$labelResult.text= "Enter User Name first"
}

$FoundUsers = (Get-QADUser $textusername.text)
foreach ($User in $FoundUsers)
{
$ResultsList.Items.Add($User)
}
})

$pw = ConvertTo-SecureString "passw0rd" -asplaintext -force
$buttonChange.add_click({
$labelResult.text= ""
$Selecteduser = $ResultsList.SelectedItem
$s = "Reset Password for  " + ($Selecteduser) + "?";
$d = [Windows.Forms.MessageBox]::Show($s, "Are you sure?", [Windows.Forms.MessageBoxButtons]::YesNo, [Windows.Forms.MessageBoxIcon]::Question)

# if admin sure
if ($d -eq [Windows.Forms.DialogResult]::Yes)
{
if ($mustchange.Checked -eq $true)
{
Get-QADUser $Selecteduser | Set-QADUser -userPassword "12345678" -userMustChangePassword 'true' -ConnectionAccount "domain\user" -ConnectionPassword $pw
$labelResult.text= "Password for " +($Selecteduser) + " has been changed to 12345678. User must change password at next logon!"
}
ELSE
{
Get-QADUser $Selecteduser | Set-QADUser -userPassword "12345678" -ConnectionAccount "domain\user" -ConnectionPassword $pw
$labelResult.text= "Password for " +($Selecteduser) + " has been changed to 12345678."
}
}
# if not sure
If ($d -eq [Windows.Forms.DialogResult]::No)
{
$labelResult.text="Choose Apropriate User"
}

})

# Add the controls to the Form
$form.controls.add($buttonChange)
$form.controls.add($labelUser)
$form.controls.add($textusername)
$form.controls.add($labelSearch)
$form.controls.add($labelResult)
$form.controls.add($mustchange)
$form.controls.add($buttonFind)
$form.controls.add($ResultsList)
# Display the dialog
$form.ShowDialog()

0
0
149

Еще по теме

Сила PowerShell - Yvision.kz