SET IsManuallyInstalled to FALSE

SCOM.Management.SetManuallyInstalledFalse.Task (Task)

Element properties:

TargetMicrosoft.SystemCenter.HealthService
AccessibilityPublic
CategoryCustom
EnabledTrue
RemotableFalse
Timeout120

Member Modules:

ID Module Type TypeId RunAs 
PSWA WriteAction Microsoft.Windows.PowerShellWriteAction Default

Source Code:

<Task ID="SCOM.Management.SetManuallyInstalledFalse.Task" Accessibility="Public" Enabled="true" Target="SC!Microsoft.SystemCenter.HealthService" Timeout="120" Remotable="true" RunLocation="SC!Microsoft.SystemCenter.CollectionManagementServer">
<Category>Custom</Category>
<WriteAction ID="PSWA" TypeID="Windows!Microsoft.Windows.PowerShellWriteAction">
<ScriptName>SCOM.Management.SetManuallyInstalledFalse.Task.ps1</ScriptName>
<ScriptBody><Script>
#=================================================================================
# Script to Set HealthService Manually Installed to False
#=================================================================================
Param($AgentName)

# $AgentName = "WS2012R2.opsmgr.net"


#=================================================================================
# Constants section - modify stuff here:

# Assign script name variable for use in event logging
$ScriptName = "SCOM.Management.SetManuallyInstalledFalse.Task.ps1"
#=================================================================================

# Gather who the script is running as
$whoami = whoami

#Load the MOMScript API and discovery propertybag
$momapi = New-Object -comObject "Mom.ScriptAPI"

#Log script event that we are starting task
$momapi.LogScriptEvent($ScriptName,1317,0, "Starting script. Running as ($whoami)")

# Begin Main Script
#=================================================================================
Write-Host "Task Starting. Running as $whoami"

IF ($AgentName)
{
Write-Host "Agent Name is ($AgentName)."
}
ELSE
{
Write-Host "FATAL ERROR: Agent Name was not passed to script. Terminating"
$momapi.LogScriptEvent($ScriptName,1317,2, "FATAL ERROR: Agent Name was not passed to script. Terminating")
#EXIT
}

#Connect to SQL

$SCOMRegKey = "HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup"
$SQLServer = (Get-ItemProperty $SCOMRegKey).DatabaseServerName
$SQLDBName = (Get-ItemProperty $SCOMRegKey).DatabaseName

$SqlQuery1 = "SELECT IsManuallyInstalled from MT_HealthService WHERE DisplayName = '$AgentName'"

Write-Host "Connecting to SQL. SQL Server: ($SQLServer). SQL DB: ($SQLDBName)."

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = &#x201C;Server=$SQLServer;Database=$SQLDBName;Integrated Security=True&#x201D;
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery1
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$ds = New-Object System.Data.DataSet
$SqlAdapter.Fill($ds) | Out-Null

$RowCount = $ds.Tables[0].Rows.Count

IF ($RowCount -lt 1)
{
Write-Host "FATAL ERROR: We did not retrieve an IsManuallyInstalled value from SQL for ($AgentName). Terminating"
$momapi.LogScriptEvent($ScriptName,1317,2, "FATAL ERROR: We did not retrieve an InsManuallyInstalled value from SQL for ($AgentName). Terminating")
#EXIT
}

$IsManInstValue = $ds.Tables[0].Rows[0].IsManuallyInstalled

IF ($IsManInstValue -ne $true)
{
Write-Host "FATAL ERROR: IsManuallyInstalled value from SQL for ($AgentName) is ($IsManInstValue). Terminating"
$momapi.LogScriptEvent($ScriptName,1317,2, "FATAL ERROR: IsManuallyInstalled value from SQL for ($AgentName) is ($IsManInstValue). Terminating")
#EXIT
}

# Update Table in SQL
Write-Host "IsManuallyInstalled value found from SQL was ($IsManInstValue). Attempting to Update SQL now."

$SqlQuery2 = "UPDATE MT_HealthService
SET IsManuallyInstalled=0 WHERE IsManuallyInstalled=1 AND BaseManagedEntityId IN
(select BaseManagedEntityID from BaseManagedEntity where BaseManagedTypeId = 'AB4C891F-3359-3FB6-0704-075FBFE36710' AND DisplayName = '$AgentName')"

$SqlCmd.CommandText = $SqlQuery2
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$ds = New-Object System.Data.DataSet
$SqlAdapter.Fill($ds) | Out-Null

# Check value Again

$SqlCmd.CommandText = $SqlQuery1
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$ds = New-Object System.Data.DataSet
$SqlAdapter.Fill($ds) | Out-Null
$SqlConnection.Close()

$IsManInstValue = $ds.Tables[0].Rows[0].IsManuallyInstalled

IF ($IsManInstValue -ne $false)
{
Write-Host "FATAL ERROR: Attempt to set IsManuallyInstalled value failed. Current value for ($AgentName) is ($IsManInstValue). Terminating"
$momapi.LogScriptEvent($ScriptName,1317,2, "FATAL ERROR: Attempt to set IsManuallyInstalled value failed. Current value for ($AgentName) is ($IsManInstValue). Terminating")
#EXIT
}

Write-Host "Successfully set IsManuallyInstalled value. New value for ($AgentName) is ($IsManInstValue)."
#=================================================================================
# End Main Script
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>AgentName</Name>
<Value>$Target/Property[Type="System!System.Entity"]/DisplayName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>120</TimeoutSeconds>
</WriteAction>
</Task>