Private/Write-ServiceStatus.ps1
function Write-ServiceStatus { param ( [parameter(Mandatory=$False)] [string] $FileName, [parameter(Mandatory=$False)] [string] $TableName, [parameter(Mandatory=$False)] [string] $SiteCode, [parameter(Mandatory=$False)] [int] $NumberOfDays, [parameter(Mandatory=$False)] [string] $LogFile, [parameter(Mandatory=$False)] [string] $ServerName, [parameter(Mandatory=$False)] $ContinueOnError = $true ) Write-Log -Message "function: write-servicestatus ****" -LogFile $logfile try { $services = Get-WmiObject -Class "Win32_Service" -ComputerName $ServerName -ErrorAction Stop $Fields = @("Caption", "ServiceName", "StartMode", "Status") $ServicesTable = New-CmDataTable -TableName $tableName -Fields $Fields foreach ($service in $services) { $row = $ServicesTable.NewRow() $row.Caption = $service.Caption $row.ServiceName = $service.Name $row.StartMode = $service.StartMode $row.Status = $service.State $ServicesTable.Rows.Add($row) } } catch { if ($ContinueOnError -eq $True) { Write-Log -Category 'Error' -Message $_.Exception.Message -Severity 2 -LogFile $LogFile } else { Write-Log -Category 'Error' -Message "Terminating: $($_.Exception.Message)" -Severity 3 -LogFile $LogFile return } } <# $SiteInformation = Get-CmWmiObject -query "select Type from SMS_Site where ServerName = '$Server'" -namespace "Root\SMS\Site_$SiteCodeNamespace" -computerName $smsprovider -logfile $logfile if ($SiteInformation -ne $null) { $SiteType = $SiteInformation.Type } Write-Log -Message "getting sccm site system roles" -LogFile $logfile $WMISMSListRoles = Get-CmWmiObject -query "select distinct RoleName from SMS_SCI_SysResUse where NetworkOSPath = '\\\\$Server'" -computerName $smsprovider -namespace "root\sms\site_$SiteCodeNamespace" -logfile $logfile $SMSListRoles = @() foreach ($WMIServer in $WMISMSListRoles) { $SMSListRoles += $WMIServer.RoleName } Write-Log -Message "Roles discovered: " + $SMSListRoles -join(", ") -LogFile $logfile $Fields = @("ServiceName", "Status") $ServicesTable = New-CmDataTable -TableName $tableName -Fields $Fields if ($SMSListRoles -contains 'AI Update Service Point') { Write-Log -Message "site system role: AI Update Service Point" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "AI_UPDATE_SERVICE_POINT" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } if (($SMSListRoles -contains 'SMS Application Web Service') -or ($SMSListRoles -contains 'SMS Distribution Point') -or ($SMSListRoles -contains 'SMS Fallback Status Point') -or ($SMSListRoles -contains 'SMS Management Point') -or ($SMSListRoles -contains 'SMS Portal Web Site') ) { Write-Log -Message "site system role: MP, Application Web, Portal Web, DP or Fallback Status Point" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "IISADMIN" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) $row = $ServicesTable.NewRow() $row.ServiceName = "W3SVC" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } if ($SMSListRoles -contains 'SMS Component Server') { Write-Log -Message "site system role: SMS Component Server" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "SMS_Executive" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } if ($SMSListRoles -contains 'SMS Site Server') { Write-Log -Message "site system role: SMS Site Server" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "SMS_NOTIFICATION_SERVER" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) $row = $ServicesTable.NewRow() $row.ServiceName = "SMS_SITE_COMPONENT_MANAGER" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) if ($SiteType -ne 1) { $row = $ServicesTable.NewRow() $row.ServiceName = "SMS_SITE_VSS_WRITER" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } } if ($SMSListRoles -contains 'SMS Software Update Point') { Write-Log -Message "site system role: Software Update Point" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "WsusService" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } if ($SMSListRoles -contains 'SMS SQL Server') { Write-Log -Message "site system role: SQL Server" -LogFile $logfile $row = $ServicesTable.NewRow() if ($SiteType -ne 1) { $row.ServiceName = "$SQLServiceName" } else { $row.ServiceName = 'MSSQL$CONFIGMGRSEC' } $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) $row = $ServicesTable.NewRow() $row.ServiceName = "SQLWriter" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } if ($SMSListRoles -contains 'SMS SRS Reporting Point') { Write-Log -Message "site system role: SQL Reporting Services" -LogFile $logfile $row = $ServicesTable.NewRow() $row.ServiceName = "ReportServer" $row.Status = (Get-ServiceStatus -LogFile $logfile -ServerName $servername -ServiceName $row.ServiceName) $ServicesTable.Rows.Add($row) } Write-Log -Message "finished enumerating site system roles" -LogFile $logfile #> , $ServicesTable | Export-CliXml -Path ($filename) } |