Ansible Custom Facts Powershell Script

Ansible Custom Facts Powershell Script

### Get all Windows Roles & Services
$winFeatures = Get-WindowsFeature -ErrorAction SilentlyContinue

### CHECK for installed WINDOWS ROLES
$Services = @()

if(($winFeatures | Where-Object{$_.Name -like "AD-Domain-Services"}).InstallState -eq "Installed"){$Services += "Domain Controller"}
if(($winFeatures | Where-Object{$_.Name -like "AD-Certificate"}).InstallState -eq "Installed"){$Services += "Certificate Authority"}
if(($winFeatures | Where-Object{$_.Name -like "DHCP"}).InstallState -eq "Installed"){$Services += "DHCP"}
if(($winFeatures | Where-Object{$_.Name -like "Print-Services"}).InstallState -eq "Installed"){$Services += "Print Services"}
if(($winFeatures | Where-Object{$_.Name -like "Web-Server"}).InstallState -eq "Installed"){$Services += "IIS"}
if(($winFeatures | Where-Object{$_.Name -like "Remote-Desktop-Services"}).InstallState -eq "Installed"){$Services += "Remote Desktop Services"}
if(($winFeatures | Where-Object{$_.Name -like "ADFS-Federation"}).InstallState -eq "Installed"){$Services += "Federation Services"}
if(($winFeatures | Where-Object{$_.Name -like "NPAS*"}).InstallState -eq "Installed"){$Services += "Network Policy Services"}
if(($winFeatures | Where-Object{$_.Name -like "UpdateServices"}).InstallState -eq "Installed"){$Services += "WSUS"}

### CHECK for WINDOWS VERSION
$WindowsVersion = [PSCustomObject]@{
    CurrentBuildNumber = [int](Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name "CurrentBuildNumber").CurrentBuildNumber
    UBR = [int](Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" -Name "UBR").UBR
}

### BUILD OBJECT
$WindowsFacts = [PSCustomObject]@{
    WindowsVersion = $WindowsVersion
    Services = $Services
}

return $WindowsFacts

You may also like...