Wednesday, November 15, 2023

Create a Monthly report using schedule task using PowerShell script

 

#Would talk about pre-requisites for importing ActiveDirectory Module at end of post

import-module ActiveDirectory


#Preparing files to write data and attach to email

$file1 = "D:\Bixam\AD_Enabled_Users\Arcosa_Enabled_Users_list_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv"



Get-ADUser -filter "enabled -eq'true'" -Properties * | Select-object @{N="AD Emplid"; E={$_.employeeid}},@{N="AD Emplnum"; E={$_.employeenumber}},@{N="Employee Name"; E={$_.displayNameprintable}},@{N="Segment"; E={$_.extensionattribute6}},@{N="Company"; E={$_.extensionattribute2+"-"+$_.extensionattribute3}},@{N="Business Unit"; E={$_.company}},@{N="EE Type"; E={$_.employeetype}},@{N="Country"; E={$_.co}},@{N="Email Address"; E={$_.mail}},@{N="AD Network ID"; E={$_.samaccountName}} | export-csv "$file1" -NoTypeInformation



#Email related settings

$smtpServer = "smtp.bbntech.com"

$att1 = new-object Net.Mail.Attachment($file1)

##$att2 = new-object Net.Mail.Attachment($file2)

$msg = new-object Net.Mail.MailMessage

$smtp = new-object Net.Mail.SmtpClient($smtpServer)

$msg.From = "AD-Reports@bbntech.com"

$msg.To.Add("email1@bbntech.com")

$msg.To.Add("email2@bbntech.com")

$msg.To.Add("email3@bbntech.com")

$msg.Subject = "List of AD Enabled Users report"

$msg.Body = "Attached is the List of Arcosa Enabled Users report, its Monthly report scheduled to send email with an attachment"

$msg.Attachments.Add($att1)

##$msg.Attachments.Add($att2)

$smtp.Send($msg)

$att1.Dispose()

##$att2.Dispose()

 

 #### Keeps only 24 files and removes older files###

 $path = "D:\Folder\AD_Enabled_Users"

$files = Get-ChildItem -Path $path -Recurse | Where-Object {-not $_.PsIsContainer}

$keep = 24

if ($files.Count -gt $keep) {

    $files | Sort-Object CreationTime | Select-Object -First ($files.Count - $keep) | Remove-Item -Force

}

#Script ends here

Create schedule task using PowerShell

 

$Action = New-ScheduledTaskAction "powershell.exe "D:\ADScripts\Get-ADusers-RITM-Monthly-Report.ps1""

$Trigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 2 -DaysOfWeek Sunday -At 3am

$Principal = New-ScheduledTaskPrincipal -UserID AD-HMR$ -LogonType Password

$taskname = "AD Enabled Users List Monthly Report"

$Taskpath = "AD-Tasks"

$TaskDescription = "AD Enabled users List, This task will generate the Enabled users list and send it to Bix and bbntech as Attachment file."

Register-ScheduledTask  –Action $Action –Trigger $Trigger –Principal $Principal -TaskName $taskname -Description $TaskDescription -taskPath $Taskpath 

#$Time = New-ScheduledTaskTrigger -Monthly -WeeksInterval 4 -DaysOfWeek Monday -At 3am

#Set-ScheduledTask -TaskName "Arcosa Enabled Users List Monthly Report" –Principal $Principal -taskPath $Taskpath



Wednesday, July 12, 2023

Get AD security group members list on email as attachment.

 This script will provide members list as csv file. You will get it over email and will be stored in specified location and it will only will keep 30 files latest. 


#Get-ADGroupMember -Server "bbntech.com" -Identity "G-SE-NTT-MFAEnable" -Recursive | get-aduser -Properties GivenName,Surname,Name,DisplayName,samaccountname,UserPrincipalName,mail,OfficePhone,telephoneNumber,Enabled  | Select GivenName,Surname,Name,DisplayName,samaccountname,UserPrincipalName,mail,OfficePhone,telephoneNumber,Enabled | export-csv D:\bbn\G-SE-NTT-MFAEnable_Users.csv -Notypeinformation

# BBN Techinfo

 

#Would talk about pre-requisites for importing Active Directory Module at end of post

import-module ActiveDirectory

 

#Preparing files to write data and attach to email

$file1 = "D:\bbn\MFA_Users\G-SE-NTT-MFAEnable_Users_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv"


#################################################


$path = "D:\bbn\MFA_Users"

$files = Get-ChildItem -Path $path -Recurse | Where-Object {-not $_.PsIsContainer}

$keep = 5

if ($files.Count -gt $keep) {

    $files | Sort-Object CreationTime | Select-Object -First ($files.Count - $keep) | Remove-Item -Force -WhatIf

}



#####################################



##$file2 = "c:\temp\GroupMembershipDetails_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv"

 

#Powershell command to fetch all AD Users data, Columns can be added/ removed

#Get-ADUser -Properties * -filter *| select SamAccountName,CN,DisplayName,EmailAddress,MobilePhone,Department,City,Company,Enabled,ObjectClass,Created,msExchWhenMailboxCreated,Modified,LastLogonDate,LastBadPasswordAttempt,PasswordLastSet,PasswordNeverExpires,AccountExpirationDate,BadLogonCount,Manager,DistinguishedName,whenCreated | export-csv "$file1" -noTypeInformation

Get-ADGroupMember -Server "bbn.com" -Identity "G-SE-NTT-MFAEnable" -Recursive | get-aduser -Properties GivenName,Surname,Name,DisplayName,samaccountname,UserPrincipalName,mail,OfficePhone,telephoneNumber,Enabled  | Select GivenName,Surname,Name,DisplayName,samaccountname,UserPrincipalName,mail,OfficePhone,telephoneNumber,Enabled | export-csv "$file1" -Notypeinformation 

#Powershell command to fetch group memberships of each single user in AD

##Get-ADUser -Filter * -Properties SamAccountName,DisplayName,memberof | % { New-Object PSObject -Property @{ DomainID = $_.SamAccountName UserName = $_.DisplayName Groups = ($_.memberof | Get-ADGroup | Select -ExpandProperty Name) -join "," } } | Select DomainID,UserName,Groups | Export-Csv "$file2" -noTypeInformation

 

#Email related settings

$smtpServer = "smtp.bbn.com"

$att1 = new-object Net.Mail.Attachment($file1)

##$att2 = new-object Net.Mail.Attachment($file2)

$msg = new-object Net.Mail.MailMessage

$smtp = new-object Net.Mail.SmtpClient($smtpServer)

$msg.From = "AD-Reports@bbn.com"

$msg.To.Add("bbn@bbntech.com")

$msg.To.Add("bbn1@bbntech.com")

$msg.Subject = "List of Users from MFA Enabled Group"

$msg.Body = "Attached is the List of MFA Enabled users from the Group - G-SE-NTT-MFAEnable."

$msg.Attachments.Add($att1)

##$msg.Attachments.Add($att2)

$smtp.Send($msg)

$att1.Dispose()

##$att2.Dispose()

 

 #### Keeps only 7 files and removes older files###

 $path = "D:\bbn\MFA_Users"

$files = Get-ChildItem -Path $path -Recurse | Where-Object {-not $_.PsIsContainer}

$keep = 7

if ($files.Count -gt $keep) {

    $files | Sort-Object CreationTime | Select-Object -First ($files.Count - $keep) | Remove-Item -Force

}

#Script ends here

Automatically add users to AD security group from a multiple OUs of Active Directory

 Please schedule a Task and it will work for you. If you would like to add more OUs then you need to create a variables like below.

#Variables

$TargetGroup = “Testing“

$TargetOU = “OU=Test,OU=UAT,OU=Corporate Group Users,OU=Corporate Group,DC=bbntech,DC=com“

$TargetOU1 ="OU=NO GPOs,OU=Corporate Group Users,OU=Corporate Group,DC=bbntech,DC=com"

#Target user query

$UserAccounts = Get-ADUser -Filter * | ?{($_.DistinguishedName -like “*$TargetOU*”) -or ($_.DistinguishedName -like “*$TargetOU1*”) -and $_.Enabled -eq “True”}

ForEach($User in $UserAccounts)

{

$UsersName = $User.Name

#Check for group membership

$Membership = Get-ADGroup $TargetGroup | Get-ADGroupMember | ?{$_.Name -eq $UsersName}

if(!$Membership)

{

“Adding $UsersName to $TargetGroup”

Get-ADGroup $TargetGroup | Add-ADGroupMember -Members $User -Verbose  

}

}

Automatically add AD user to Security group from a OU using powershell

 

Script will help you to add users from a specified OU to AD Security group. 


#Variables

$TargetGroup = “Testing“

$TargetOU = “OU=Test,OU=UAT,OU=Corporate Group Users,OU=Corporate Group,DC=BBNTech,DC=com“

#Target user query

$UserAccounts = Get-ADUser -Filter * | ?{$_.DistinguishedName -like “*$TargetOU*” -and $_.Enabled -eq “True”}

ForEach($User in $UserAccounts)

{

$UsersName = $User.Name

#Check for group membership

$Membership = Get-ADGroup $TargetGroup | Get-ADGroupMember | ?{$_.Name -eq $UsersName}

if(!$Membership)

{

“Adding $UsersName to $TargetGroup”

Get-ADGroup $TargetGroup | Add-ADGroupMember -Members $User -Verbose

}

}

Friday, February 10, 2023

Copy file to multiple remote server using powershell

 

Share your folder where you have files. if you have multiple files or folder then you zip them. 

       Who ever Admin performing this operation or activity should have access on both source and target to copy and pate the files from a Network share folder. 


$servers = Get-Content 'c:\temp\file.txt'

Invoke-Command -ComputerName $servers -ScriptBlock

{

Copy-Item -Path '\\servername\folder\file.zip' -Destination "c:\\temp" -Verbose

}


Friday, January 13, 2023

Move bulk Computer object to OU using CSV file.

 

$ComputersPath= Import-Csv -Path "D:\XYZ\Computers.csv"

$TargetOU = "OU=WorkStations,DC=bbn,DC=com"

foreach ($item in $ComputersPath)

{

    $computer = Get-ADComputer $item.CompName

    Move-ADObject -Identity $computer.DistinguishedName -TargetPath $TargetOU -Confirm:$false

    Write-Host Computer account $computer.Name has been moved successfully

}