ps/Modules/Alkami.PowerShell.SDK/Public/Get-SDKSupport.ps1
2023-05-30 22:51:22 -07:00

104 lines
5.6 KiB
PowerShell

function Get-SDKSupport() {
<#
.SYNOPSIS
Gets system information and all SDK/Alkami installed packages along with the Windows Experience Index
#>
[CmdletBinding()]
param ()
$transcriptFilename = "Alkami.SDK.Support.$(Get-Date -Format "yyyyMMddhhmm").txt"
$transcriptPath = Join-Path -Path (Get-OrbLogsPath) -ChildPath $transcriptFilename
Start-Transcript -Path $transcriptPath
"`nComputer Info:" | Out-Default -Transcript | Out-Null
$diskInfo = Get-PhysicalDisk
$sysInfo = systemInfo
$processorInfo = Get-CimInstance -ComputerName Localhost -Class CIM_Processor -ErrorAction Stop | Select-Object
$hotFixes = Get-HotFix
Write-Host "Generating Experience Index. This will take a while but it is still working, promise."
$perfIndex = winsat formal
$perfIndexReport = get-wmiobject -class win32_winsat
"`tHardware Information:" | Out-Default -Transcript | Out-Null
"`t`tDisk:" | Out-Default -Transcript | Out-Null
"`t`t`tType: $($diskInfo.MediaType)" | Out-Default -Transcript | Out-Null
"`t`t`tName: $($diskInfo.FriendlyName)" | Out-Default -Transcript | Out-Null
"`t`t`tManufacturer: $(($diskInfo.CimInstanceProperties | Where-Object -Property Name -eq 'Manufacturer' | Select-Object -Property Value).Value)" | Out-Default -Transcript | Out-Null
"`t`t`tModel: $($diskInfo.Model)" | Out-Default -Transcript | Out-Null
"`t`t`tStatus: $($diskInfo.HealthStatus)" | Out-Default -Transcript | Out-Null
"`n`t`tProcessor:" | Out-Default -Transcript | Out-Null
"`t`t`tManufacturer: $($processorInfo.Manufacturer)" | Out-Default -Transcript | Out-Null
"`t`t`tName: $($processorInfo.Name)" | Out-Default -Transcript | Out-Null
"`t`t`tNumber Of Cores: $($processorInfo.NumberOfCores)" | Out-Default -Transcript | Out-Null
"`t`t`tNumber Of LogicalProcessors: $($processorInfo.NumberOfLogicalProcessors)" | Out-Default -Transcript | Out-Null
"`t`t`tCurrent Clock Speed: $($processorInfo.CurrentClockSpeed)" | Out-Default -Transcript | Out-Null
"`t`t`tMax Clock Speed: $($processorInfo.MaxClockSpeed)" | Out-Default -Transcript | Out-Null
"`t`t`tThread Count: $($processorInfo.ThreadCount)" | Out-Default -Transcript | Out-Null
"`n`t`tMemory:" | Out-Default -Transcript | Out-Null
"`t`t`tTotal Physical Memory: $((($sysInfo | Select-String 'Total Physical Memory:').ToString().Split(':'))[1].Trim())" | Out-Default -Transcript | Out-Null
"`t`t`tAvailable Physical Memory: $((($sysInfo | Select-String 'Available Physical Memory:').ToString().Split(':'))[1].Trim())" | Out-Default -Transcript | Out-Null
"`n`t`tOperating System Information:" | Out-Default -Transcript | Out-Null
"`t`t`tName: $((($sysInfo | Select-String 'OS Name:').ToString().Split(':'))[1].Trim())" | Out-Default -Transcript | Out-Null
"`t`t`tVersion: $(((ConvertTo-Json ($sysInfo | Select-String 'OS Version:')[0]) | ConvertFrom-Json).Line.Split(':')[1].Trim())" | Out-Default -Transcript | Out-Null
"`t`t`tHotFix's Installed:" | Out-Default -Transcript | Out-Null
foreach ($hotfix in $hotFixes) {
"`t`t`t$($hotfix.HotFixID)" | Out-Default -Transcript | Out-Null
}
"`nWindows Experience Index:" | Out-Default -Transcript | Out-Null
"`tOverall Experience: $($perfIndexReport.WinSPRLevel)" | Out-Default -Transcript | Out-Null
"`tCPU: $($perfIndexReport.CPUScore)" | Out-Default -Transcript | Out-Null
"`tDisk: $($perfIndexReport.DiskScore)" | Out-Default -Transcript | Out-Null
"`tMemory: $($perfIndexReport.MemoryScore)" | Out-Default -Transcript | Out-Null
"`tGraphics: $($perfIndexReport.GraphicsScore)" | Out-Default -Transcript | Out-Null
"`tDirect 3D: $($perfIndexReport.D3DScore)" | Out-Default -Transcript | Out-Null
"`nInstalled Packages:" | Out-Default -Transcript | Out-Null
# Get installed packages
$allLocallyInstalledPackages = (choco list -lr)
foreach ($package in $allLocallyInstalledPackages) {
if ($package.IndexOf('|') -eq -1) {
continue
}
$splits = $package -split '\|'
$id = $splits[0]
$version = $splits[1]
"`t$id $version" | Out-Default -Transcript | Out-Null
}
# Get Installed Alkami services and their current state
$alkamiServices = Get-Service | Where-Object {($_.Name -match "Alkami.+") -or ($_.Name -match "redis-+")}
"`nAlkami Services:" | Out-Default -Transcript | Out-Null
"`tStatus:`t`tName:" | Out-Default -Transcript | Out-Null
foreach ($service in $alkamiServices) {
"`t$($service.Status)`t`t$($service.Name)" | Out-Default -Transcript | Out-Null
}
# Get Installed software
# Get all installed Visual Studio instances
"`nVisual Studio Instances:" | Out-Default -Transcript | Out-Null
$vsInstances = Get-CimInstance MSFT_VSInstance
foreach ($vsInstance in $vsInstances) {
"`t$($vsInstance.ElementName) Version:$($vsInstance.Version) is installed." | Out-Default -Transcript | Out-Null
}
# Get all installed MS SQL instances
"`nMicrosoft SQL Server Instances:" | Out-Default -Transcript | Out-Null
$sqlInstances = (get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
foreach ($sqlInstance in $sqlInstances)
{
$instanceName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL').$sqlInstance
"`tInstance Name: $($sqlInstance)" | Out-Default -Transcript | Out-Null
"`tEdition: $((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceName\Setup").Edition)" | Out-Default -Transcript | Out-Null
"`tVersion: $((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceName\Setup").Version)" | Out-Default -Transcript | Out-Null
"`tPatch Level: $((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceName\Setup").PatchLevel)`n" | Out-Default -Transcript | Out-Null
}
"`n"
Stop-Transcript
}