173 lines
4.2 KiB
PowerShell
173 lines
4.2 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Intune Readiness Assessment Script
|
|
|
|
.DESCRIPTION
|
|
Collects the minimum required device information for an Intune deployment:
|
|
- Computer Name
|
|
- Serial Number
|
|
- Manufacturer
|
|
- Model
|
|
- Windows Edition
|
|
- Windows Build
|
|
- TPM Status
|
|
- Secure Boot Status
|
|
- Domain Join Status
|
|
- Entra ID Join Status
|
|
- Primary User
|
|
- BitLocker Status
|
|
- Installed Applications Count
|
|
- Antivirus Product
|
|
|
|
.NOTES
|
|
Run as Administrator for best results.
|
|
#>
|
|
|
|
# Stop running if script is not run as Administrator
|
|
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
|
Write-Host "ERROR: Script must be run as administrator" -ForegroundColor Yellow -BackgroundColor Red -NoNewLine
|
|
Write-Host
|
|
Write-Host "Operation aborted."
|
|
exit
|
|
}
|
|
|
|
# Get basic computer information
|
|
$ComputerSystem = Get-CimInstance Win32_ComputerSystem
|
|
$BIOS = Get-CimInstance Win32_BIOS
|
|
$OS = Get-CimInstance Win32_OperatingSystem
|
|
|
|
# Computer Name
|
|
$ComputerName = $env:COMPUTERNAME
|
|
|
|
# Serial Number
|
|
$SerialNumber = $BIOS.SerialNumber
|
|
|
|
# Manufacturer and Model
|
|
$Manufacturer = $ComputerSystem.Manufacturer
|
|
$Model = $ComputerSystem.Model
|
|
|
|
# Windows Information
|
|
$WindowsEdition = (Get-ComputerInfo).OsName
|
|
$WindowsBuild = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object DisplayVersion).DisplayVersion
|
|
|
|
# TPM Information
|
|
try {
|
|
$TPM = Get-Tpm
|
|
if ($TPM.TpmPresent) {
|
|
$TPMStatus = "Present"
|
|
$TPMVersion = ($TPM.ManufacturerVersion)
|
|
}
|
|
else {
|
|
$TPMStatus = "Not Present"
|
|
$TPMVersion = "N/A"
|
|
}
|
|
}
|
|
catch {
|
|
$TPMStatus = "Unknown"
|
|
$TPMVersion = "Unknown"
|
|
}
|
|
|
|
# Secure Boot
|
|
try {
|
|
$SecureBoot = Confirm-SecureBootUEFI
|
|
}
|
|
catch {
|
|
$SecureBoot = "Unsupported/Legacy BIOS"
|
|
}
|
|
|
|
# Domain Join Status
|
|
$DomainJoined = $ComputerSystem.PartOfDomain
|
|
|
|
# Entra ID Join Status
|
|
$AzureADJoined = "Unknown"
|
|
|
|
try {
|
|
$DsReg = dsregcmd /status
|
|
|
|
if ($DsReg -match "AzureAdJoined\s*:\s*YES") {
|
|
$AzureADJoined = "Yes"
|
|
}
|
|
elseif ($DsReg -match "AzureAdJoined\s*:\s*NO") {
|
|
$AzureADJoined = "No"
|
|
}
|
|
}
|
|
catch {
|
|
$AzureADJoined = "Unable to Determine"
|
|
}
|
|
|
|
# Primary User
|
|
$PrimaryUser = (Get-CimInstance Win32_ComputerSystem).UserName
|
|
|
|
# BitLocker Status
|
|
try {
|
|
$BitLockerVolume = Get-BitLockerVolume -MountPoint "C:"
|
|
$BitLockerStatus = $BitLockerVolume.ProtectionStatus
|
|
|
|
switch ($BitLockerStatus) {
|
|
1 { $BitLockerStatus = "Protected" }
|
|
0 { $BitLockerStatus = "Not Protected" }
|
|
default { $BitLockerStatus = "Unknown" }
|
|
}
|
|
}
|
|
catch {
|
|
$BitLockerStatus = "Unknown"
|
|
}
|
|
|
|
# Installed Applications Count
|
|
try {
|
|
$AppCount = (
|
|
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* ,
|
|
HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* `
|
|
-ErrorAction SilentlyContinue |
|
|
Where-Object { $_.DisplayName } |
|
|
Measure-Object
|
|
).Count
|
|
}
|
|
catch {
|
|
$AppCount = "Unknown"
|
|
}
|
|
|
|
# Antivirus Product
|
|
try {
|
|
$AV = Get-CimInstance `
|
|
-Namespace "root\SecurityCenter2" `
|
|
-ClassName AntiVirusProduct `
|
|
-ErrorAction Stop
|
|
|
|
$AntivirusProduct = ($AV.displayName -join "; ")
|
|
}
|
|
catch {
|
|
$AntivirusProduct = "Not Detected"
|
|
}
|
|
|
|
# Create Output Object
|
|
$Results = [PSCustomObject]@{
|
|
ComputerName = $ComputerName
|
|
SerialNumber = $SerialNumber
|
|
Manufacturer = $Manufacturer
|
|
Model = $Model
|
|
WindowsEdition = $WindowsEdition
|
|
WindowsBuild = $WindowsBuild
|
|
TPMStatus = $TPMStatus
|
|
TPMVersion = $TPMVersion
|
|
SecureBootEnabled = $SecureBoot
|
|
DomainJoined = $DomainJoined
|
|
AzureADJoined = $AzureADJoined
|
|
PrimaryUser = $PrimaryUser
|
|
BitLockerStatus = $BitLockerStatus
|
|
InstalledApps = $AppCount
|
|
AntivirusProduct = $AntivirusProduct
|
|
}
|
|
|
|
# Display Results
|
|
$Results | Format-List
|
|
|
|
# Export Results
|
|
$OutputFile = "$env:PUBLIC\Documents\Intune_Readiness_$ComputerName.csv"
|
|
|
|
$Results | Export-Csv -Path $OutputFile -NoTypeInformation
|
|
|
|
Write-Host ""
|
|
Write-Host "Assessment complete." -ForegroundColor Green
|
|
Write-Host "Results exported to: $OutputFile" -ForegroundColor Cyan
|