# Assign script name variable for use in event logging
$ScriptName = "SCOM.Management.OMSWorkSpaceRemove.WA.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,1347,0, "`n Starting script. `n Running as ($whoami)")
# Begin Main Script
#=================================================================================
Write-Host "Task Starting. Running as $whoami"
#Load agent scripting object
Write-Host "Loading agent scripting objects."
$AgentCfg = New-Object -ComObject AgentConfigManager.MgmtSvcCfg
#Check to see if this agent supports OMS
$AgentSupportsOMS = $AgentCfg | Get-Member -Name 'GetCloudWorkspaces'
IF (!$AgentSupportsOMS)
{
Write-Host "FATAL ERROR: This agent version does not support Cloud Workspaces. You must upgrade this agent. Terminating."
EXIT
}
#Verifying that OMS Workspace Exists
$Workspace = $AgentCfg.GetCloudWorkspace($WorkspaceID)
IF ($Workspace)
{
Write-Host "Found configured OMS Workspace: ($WorkspaceID)"
}
ELSE
{
Write-Host "FATAL ERROR: OMS Workspace not found! Workspace ID: ($WorkspaceID)"
EXIT
}
#Remove OMS Workspace
Write-Host "Attempting to remove OMS Workspace"
$Error.Clear()
$AgentCfg.RemoveCloudWorkspace($WorkspaceID)
IF ($Error)
{
Write-Host "There was a critical error removing OMS Workspace. Error is: $Error"
EXIT
}
#Restart Agent
Write-Host "OMS Workspace Removed"
Write-Host "Restarting Agent now."
#=================================================================================
# End Main Script
# Restart Agent
#=================================================================================
#We need a reliable way to restart the SCOM Agent out of band so that tasks can complete with success
$Command = "Start-Sleep -s 5;Restart-Service HealthService"
$Process = ([wmiclass]"root\cimv2:Win32_ProcessStartup").CreateInstance()
$Process.ShowWindow = 0
$Process.CreateFlags = 16777216
([wmiclass]"root\cimv2:Win32_Process").Create("powershell.exe $Command")|Out-Null
#================================================================================= </Script></ScriptBody>
<Parameters>
<Parameter>
<Name>WorkspaceID</Name>
<Value>$Config/WorkspaceID$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="PSWA"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.BaseData</OutputType>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>