Microsoft 監査コレクション サービス フォワーダーの再開

Microsoft.SystemCenter.ACS.RestartACSForwarderAction (WriteActionModuleType)

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityInternal
RunAsSystem.PrivilegedMonitoringAccount
InputTypeSystem.BaseData
OutputTypeSystem.CommandOutput

Member Modules:

ID Module Type TypeId RunAs 
RestartACSForwarder WriteAction Microsoft.Windows.ScriptWriteAction Default

Source Code:

<WriteActionModuleType ID="Microsoft.SystemCenter.ACS.RestartACSForwarderAction" Accessibility="Internal" RunAs="System!System.PrivilegedMonitoringAccount" Batching="false">
<Configuration>
<IncludeSchemaTypes>
<SchemaType>Windows!Microsoft.Windows.WindowsEventLogEventTypeSchema</SchemaType>
</IncludeSchemaTypes>
<xsd:element name="EventId" type="xsd:integer"/>
<xsd:element name="EventType" type="WindowsEventLogEventType"/>
<xsd:element name="RestartReason" type="xsd:string"/>
</Configuration>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<WriteAction ID="RestartACSForwarder" TypeID="Windows!Microsoft.Windows.ScriptWriteAction">
<ScriptName>RestartACSForwarder.js</ScriptName>
<Arguments>$Config/EventId$ $Config/EventType$ "$Config/RestartReason$"</Arguments>
<ScriptBody><Script>

var oAPI = new ActiveXObject("MOM.ScriptAPI");
var oShell = new ActiveXObject("WScript.Shell");
var oBag = oAPI.CreatePropertyBag();
var oArgs = WScript.Arguments;

var SCRIPT_NAME = "RestartACSForwarder.js";
var ENU_MESSAGE_BASE = "Restarting Audit Collection Services Forwarder. ";

var SW_HIDE = 0;
var CREATE_BREAKAWAY_FROM_JOB = 0x1000000;

// Process Arguments:
// 0 - EventId
// 1 - EventType
// 2 - RestartReason

var EventId, EVentType, RestartReason;

EventId = oArgs(0);
EventType = oArgs(1);
RestartReason = oArgs(2);

var EVENTLOG_SUCCESS = 0x0000; /* Information event */
var EVENTLOG_AUDIT_FAILURE = 0x0010; /* Failure Audit event */
var EVENTLOG_AUDIT_SUCCESS = 0x0008; /* Success Audit event */
var EVENTLOG_ERROR_TYPE = 0x0001; /* Error event */
var EVENTLOG_INFORMATION_TYPE = 0x0004; /* Information event */
var EVENTLOG_WARNING_TYPE = 0x0002; /* Warning event */

switch (EventType)
{
case "Success" :
EventType = EVENTLOG_SUCCESS;
break;
case "AuditFailure" :
EventType = EVENTLOG_AUDIT_FAILURE;
break;
case "AuditSuccess" :
EventType = EVENTLOG_AUDIT_SUCCESS;
break;
case "Error" :
EventType = EVENTLOG_ERROR_TYPE;
break;
case "Information" :
EventType = EVENTLOG_INFORMATION_TYPE;
break;
case "Warning" :
EventType = EVENTLOG_WARNING_TYPE;
break;
}

RestartReason = ENU_MESSAGE_BASE + RestartReason;

oAPI.LogScriptEvent(SCRIPT_NAME, EventId, EventType, RestartReason);
oBag.AddValue(SCRIPT_NAME, RestartReason);
oAPI.Return(oBag);

var strCommand = oShell.ExpandEnvironmentStrings("%ComSpec% /c net stop adtagent &amp; net start adtagent &amp; net start adtagent &amp; net start adtagent &amp; net start adtagent");
var objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2");

// Configure the process to break away from the job
var objStartup = objWMIService.Get("Win32_ProcessStartup");
var objConfig = objStartup.SpawnInstance_();
objConfig.ShowWindow = SW_HIDE;
objConfig.CreateFlags = CREATE_BREAKAWAY_FROM_JOB;

// Create the process
var objProcess = objWMIService.Get("Win32_Process");
var intProcessID;
var intReturn = objProcess.Create(strCommand, null, objConfig, intProcessID);

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="RestartACSForwarder"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.CommandOutput</OutputType>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>