Add AD scripts and stage import instructions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
sysadmin
2026-04-03 09:48:59 -07:00
parent 88dc431cfa
commit aed04e8ca4
7 changed files with 726 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
<#
.SYNOPSIS
Generates a report of all Active Directory computers.
.DESCRIPTION
This script queries Active Directory for all computer accounts and exports
key properties including name, operating system, last logon, and OU location.
.PARAMETER OutputPath
Optional. Path to export CSV report. If not specified, outputs to console.
.PARAMETER OperatingSystem
Optional. Filter by operating system (e.g., "Windows Server*", "*Windows 10*").
.EXAMPLE
.\Get-ADComputerReport.ps1
Lists all computers to console.
.EXAMPLE
.\Get-ADComputerReport.ps1 -OperatingSystem "Windows Server*" -OutputPath "C:\ClaudeTools\Logs\servers.csv"
Exports all Windows Server computers to CSV.
.NOTES
Author: ClaudeTools Automation
Version: 1.0
Requires: ActiveDirectory PowerShell module
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$false)]
[string]$OutputPath,
[Parameter(Mandatory=$false)]
[string]$OperatingSystem = "*"
)
# Import AD module
Import-Module ActiveDirectory -ErrorAction Stop
Write-Host "Querying Active Directory computers..." -ForegroundColor Cyan
# Get computers with properties
$computers = Get-ADComputer -Filter "OperatingSystem -like '$OperatingSystem'" -Properties `
OperatingSystem,
OperatingSystemVersion,
LastLogonDate,
Created,
Enabled,
IPv4Address,
Description,
DistinguishedName |
Select-Object `
@{N='Name';E={$_.Name}},
@{N='OperatingSystem';E={$_.OperatingSystem}},
@{N='OSVersion';E={$_.OperatingSystemVersion}},
@{N='Enabled';E={$_.Enabled}},
@{N='IPv4Address';E={$_.IPv4Address}},
@{N='LastLogon';E={$_.LastLogonDate}},
@{N='Created';E={$_.Created}},
@{N='OU';E={($_.DistinguishedName -split ',',2)[1]}},
@{N='Description';E={$_.Description}}
$computerCount = ($computers | Measure-Object).Count
Write-Host "Found $computerCount computers." -ForegroundColor Green
if ($OutputPath) {
$computers | Export-Csv -Path $OutputPath -NoTypeInformation
Write-Host "Report exported to: $OutputPath" -ForegroundColor Green
} else {
$computers | Format-Table -AutoSize
}
# Summary by OS
Write-Host "`n--- Operating System Summary ---" -ForegroundColor Yellow
$computers | Group-Object OperatingSystem | Sort-Object Count -Descending |
Format-Table @{N='Operating System';E={$_.Name}}, Count -AutoSize
# Summary by status
$enabledCount = ($computers | Where-Object { $_.Enabled -eq $true } | Measure-Object).Count
$disabledCount = ($computers | Where-Object { $_.Enabled -eq $false } | Measure-Object).Count
Write-Host "Enabled: $enabledCount | Disabled: $disabledCount"
# Stale computers (no logon in 90 days)
$staleDate = (Get-Date).AddDays(-90)
$staleCount = ($computers | Where-Object { $_.LastLogon -lt $staleDate -or $null -eq $_.LastLogon } | Measure-Object).Count
Write-Host "Stale (no logon 90+ days): $staleCount" -ForegroundColor $(if ($staleCount -gt 0) { 'Yellow' } else { 'Green' })