PowerShell 25: Active Directory Account Checker

preview_player
Показать описание
Coding an Active Directory user account checker to scan accounts in AD for errors and inconsistencies. Some practice using Active Directory POSH commandlets.



Рекомендации по теме
Комментарии
Автор

Source Code 1:
$Global:All_Users = $null;
$Global:User_Number = 0;

function RouteDisplayData
{
$The_User = $null;

if($T_Input_UPN.text -NE "")
{
$Criteria = $T_Input_UPN.text;
$The_User = Get-ADUser -Filter { UserPrincipalName -like $Criteria } -Properties *;

for($x = 0; $x -LT $Global:All_Users.Count; $x++)
{
-EQ $Criteria)
{
$Global:User_Number = $x;
$L_Record_Number_Output.Text = ($Global:User_Number+1);
}
}
}
elseif($T_Input_SAM.text -NE "")
{
$Criteria = $T_Input_SAM.text;
$The_User = Get-ADUser -Filter { SamAccountName -like $Criteria } -Properties *;

for($x = 0; $x -LT $Global:All_Users.Count; $x++)
{
-EQ $Criteria)
{
$Global:User_Number = $x;
$L_Record_Number_Output.Text = ($Global:User_Number+1);
}
}
}
elseif($T_Input_Email.text -NE "")
{
$Criteria = $T_Input_Email.text;
$The_User = Get-ADUser -Filter { EmailAddress -like $Criteria } -Properties *;

for($x = 0; $x -LT $Global:All_Users.Count; $x++)
{
-EQ $Criteria)
{
$Global:User_Number = $x;
$L_Record_Number_Output.Text = ($Global:User_Number+1);
}
}
}
elseif($T_Input_EmpID.text -NE "")
{
$Criteria = $T_Input_EmpID.text;
$The_User = Get-ADUser -Filter { employeeID -like $Criteria } -Properties *;

for($x = 0; $x -LT $Global:All_Users.Count; $x++)
{
-EQ $Criteria)
{
$Global:User_Number = $x;
$L_Record_Number_Output.Text = ($Global:User_Number+1);
}
}
}

if($The_User -EQ $null)
{
$MESSAGE = "`r`nUnable to find that account.";
$T_Group_Membership.Text = $MESSAGE;
$T_Member_Of.Text = $MESSAGE;
}
else
{ Check_User -User_Object $The_User; }

$T_Input_SAM.Text = "";
}



function Check_User($User_Object)
{
#Identity_Details
$L_Output_UPN.Text =
$L_Output_SAM.Text = $User_Object.SamAccountName;
$L_Output_EmpID.Text = $User_Object.EmployeeID;
$L_Output_DisplayName.Text = $User_Object.Name;
$L_Output_Email.Text = $User_Object.EmailAddress;
$L_Output_Alias.Text = $User_Object.SamAccountName; #$User_Object.mailnickname;
$L_Output_Enabled.Text = $User_Object.Enabled;
$L_Output_First.Text = $User_Object.GivenName;
$L_Output_Last.Text = $User_Object.Surname;
$L_Output_GUID.Text = $User_Object.ObjectGUID;
$L_Output_SID.Text = $User_Object.SID;

#Account Details
$L_Output_Account_Locked.Text = $User_Object.LockedOut;
= $User_Object.whenCreated;
= $User_Object.whenChanged;

-EQ $null)
{ = "NEVER"; }
else
{ = }


= $User_Object.PasswordLastSet;
= $User_Object.PasswordExpired;
=
=

#Attribute Details
$L_Output_Attribute_1.Text = $User_Object.msTSProperty01;
$L_Output_Attribute_5.Text = $User_Object.msTSProperty02;
$L_Output_Attribute_6.Text = $User_Object.msTSManagingLS;
$L_Output_Attribute_7.Text = $User_Object.msTSManagingLS2;
$L_Output_Attribute_8.Text = $User_Object.msTSManagingLS3;
$L_Output_Attribute_9.Text = $User_Object.msTSManagingLS4;
$L_Output_Attribute_10.Text = "Future Use";
$L_Output_Attribute_11.Text = "Future Use";
$L_Output_Attribute_12.Text = "Future Use";

#Organization Details
$L_Output_Company.Text = $User_Object.Company;
$L_Output_Department.Text = $User_Object.Department;
$L_Output_Job_Title.Text = $User_Object.Title;

$Supervisor = $User_Object.Manager -split(", ");
$Supervisor = $Supervisor -replace("CN=", "");
$L_Output_Supervisor.Text = $Supervisor[0];

#Location_Details
$L_Output_LDAP_Location.Text =
$L_Output_Home_Directory.Text = $User_Object.HomeDirectory;
$L_Output_Mapped_To.Text = $User_Object.HomeDrive;

#Group Membership
$T_Group_Membership.Text = $User_Object.managedObjects;

#Member Of
$T_Member_Of.Text = $User_Object.MemberOf;
}


#Title: AD User Checker 1.0
#Author: Carly Salali Germany
#Version: 2.0 (GUI)
#Date Created : 08/07/2020
#Last Modified: 08/07/2020
#Description: Check AD User stats and alert to space in UPN or missing attributes or field data.

OneByteAtATime
Автор

This is nothing short of amazing. Very impressive

alexc