Tag: excel

  • The Lazy Way To Do Active Directory Inventory

    The Lazy Way To Do Active Directory Inventory

    From time to time admins have to run an inventory of what is running in the AD environment. This is a good practice for audits, inventory, removing decommissioned servers, or any other good reason. The details that are required are like when was computer/ server created, when was it last logged into, what is the OS, Service Pack, and OU details if any organization was done in structuring the OU.

    Luckily PowerShell can provide all of that information in a nice .csv file which can be later edited in Excel to do filtering as needed.

    Open up PowerShell in Admin mode on the DC or create a session if doing this remotely.

    <#
    .SYNOPSIS
      Get the Inventory of computer objects in the entire forest
    .DESCRIPTION
      Get the Inventory of computer objects in the entire forest
    .INPUTS
      None. The script captures Forest and Domain details when running in the environment. 
    .OUTPUTS
      The generated output CSV file will be created in the same path from where the script was executed.
    .NOTES
      Version:        1.0
      Author:         Mohammed Wasay
      Email:          [email protected]
      Web:            www.mowasay.com
      Creation Date:  04/28/2020
    .EXAMPLE
      Get-Inventory.ps1 
    #>
    
    #Get Logged on user details
    $cuser = $env:USERDOMAIN + "\" + $env:USERNAME
    Write-Host -ForegroundColor Gray "Running script as: $cuser authenticated on $env:LOGONSERVER"
    
    #Get the Forest Domain
    $forest = (Get-ADForest).RootDomain
    
    #Get all the Domains in the Forest
    $domains = (Get-ADForest).Domains
    
    #Time format for report naming
    $timer = (Get-Date -Format MM-dd-yyyy)
    
    Write-Host -ForegroundColor Magenta "Your Forest is: $forest"
    
    #Loop through each domain
    foreach ($domain in $domains) {
        Write-Host -ForegroundColor Yellow "Working on Domain: $domain"
    
        #Get one domain controller in the domain
        Import-Module ActiveDirectory
        $dcs = Get-ADDomainController -Discover -DomainName $domain
    
        #Run the following once on the DC
        foreach ($dc in $dcs.Hostname) {
            Write-Host -ForegroundColor Cyan "Working on Domain Controller: $dc"
        
            #Getting results
            $results = Get-ADComputer -Filter * -Server $dc -Properties Enabled, Name, DNSHostName, IPv4Address, LastLogonDate, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, CanonicalName, whenCreated | Select-Object @{Name = "Domain"; Expression = { $domain } }, Enabled, Name, DNSHostName, IPv4Address, LastLogonDate, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, CanonicalName, whenCreated
            
            #One results file inclusive of all domains
            $results | Export-Csv ./$forest-Servers-$timer.csv -NoTypeInformation -Append
    
            #Seperate results file for each domain
            #$results | Export-Csv ./$domain-Servers-$timer.csv -NoTypeInformation
        }
    
        Write-Host -ForegroundColor Green "Report for $domain generated!"
    }
    Write-Host -ForegroundColor Green "------======= Done! =======------"

    Result:

  • Excel: Check email addresses in bulk if format is correct or not

    So had a request today to clean up email addresses as some of them were not valid. This was needed for over 1500 email addresses.

    So used the formula below and was able to find all addresses that were “FALSE”. I filtered them out and was able to fix them as needed.

    Here’s what you need to do:

    If your e-mails are in A column, go in the B column and in the B1 cell and copy paste this code:

    =AND(FIND("@";B2);FIND(".";B2);ISERROR(FIND(" ";B2)))

    Then, go down and left on the B1 cell so you can copy and paste the code to the other cells.  For all the valid e-mails, it will give you ‘TRUE’ and for the invalid ‘FALSE’.

    2016-08-25_14-34-49