Public/Settings/Get-CWAAInfo.ps1
function Get-CWAAInfo { [CmdletBinding(SupportsShouldProcess = $True, ConfirmImpact = 'Low')] [Alias('Get-LTServiceInfo')] Param () Begin { Write-Debug "Starting $($myInvocation.InvocationName) at line $(LINENUM)" Clear-Variable key, BasePath, exclude, Servers -EA 0 -WhatIf:$False -Confirm:$False #Clearing Variables for use $exclude = 'PSParentPath', 'PSChildName', 'PSDrive', 'PSProvider', 'PSPath' $key = $Null } Process { if ((Test-Path 'HKLM:\SOFTWARE\LabTech\Service') -eq $False) { Write-Error "ERROR: Line $(LINENUM): Unable to find information on LTSvc. Make sure the agent is installed." Return $Null } if ($PSCmdlet.ShouldProcess('LTService', 'Retrieving Service Registry Values')) { Write-Verbose 'Checking for LT Service registry keys.' Try { $key = Get-ItemProperty 'HKLM:\SOFTWARE\LabTech\Service' -ErrorAction Stop | Select-Object * -exclude $exclude if ($Null -ne $key -and -not ($key | Get-Member -EA 0 | Where-Object { $_.Name -match 'BasePath' })) { if ((Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Services\LTService') -eq $True) { Try { $BasePath = Get-Item $( Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\LTService' -ErrorAction Stop | Select-Object -Expand ImagePath | Select-String -Pattern '^[^"][^ ]+|(?<=^")[^"]+' | Select-Object -Expand Matches -First 1 | Select-Object -Expand Value -EA 0 -First 1 ) | Select-Object -Expand DirectoryName -EA 0 } Catch { $BasePath = "${env:windir}\LTSVC" } } else { $BasePath = "${env:windir}\LTSVC" } Add-Member -InputObject $key -MemberType NoteProperty -Name BasePath -Value $BasePath } $key.BasePath = [System.Environment]::ExpandEnvironmentVariables($($key | Select-Object -Expand BasePath -EA 0)) -replace '\\\\', '\' if ($Null -ne $key -and ($key | Get-Member | Where-Object { $_.Name -match 'Server Address' })) { $Servers = ($Key | Select-Object -Expand 'Server Address' -EA 0).Split('|') | ForEach-Object { $_.Trim() -replace '~', '' } | Where-Object { $_ -match '.+' } Add-Member -InputObject $key -MemberType NoteProperty -Name 'Server' -Value $Servers -Force } } Catch { Write-Error "ERROR: Line $(LINENUM): There was a problem reading the registry keys. $($Error[0])" } } } End { if ($?) { Write-Debug "Exiting $($myInvocation.InvocationName) at line $(LINENUM)" return $key } else { Write-Debug "Exiting $($myInvocation.InvocationName) at line $(LINENUM)" } } } |