Ansible Custom Facts Powershell Script
Ansible Custom Facts Powershell Script
by
Kevin
·
### 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...