<WriteActionModuleType ID="Microsoft.Windows.Server.DNS.ControlServer.WA" Accessibility="Public" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Action" type="xsd:string"/>
</Configuration>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<WriteAction ID="WA" TypeID="Windows!Microsoft.Windows.ScriptWriteAction">
<ScriptName>Microsoft.Windows.Server.DNS.ControlServer.WA.vbs</ScriptName>
<Arguments>$Config/Action$</Arguments>
<ScriptBody><Script>'Copyright (c) Microsoft Corporation. All rights reserved.
'*************************************************************************
' ScriptName: Microsoft.Windows.Server.DNS.ControlServer.WA
'
' Purpose: DNS Server DNS Control Server Write Action
'
' File: Microsoft.Windows.Server.DNS.ControlServer.WA.vbs
'*************************************************************************
Dim strCommand
Dim objDNSWMI, colServers, objServer, colCache, objCache
strCommand = WScript.Arguments(0)
On Error Resume Next
Set objDNSWMI = GetObject("winmgmts:\\.\root\MicrosoftDNS")
If Err <> 0 Then Call ThrowScriptErrorAndAbort("Unable to connect to MicrosoftDNS namespace.")
Select Case lcase(strCommand)
Case "scavenge"
Set colServers = objDNSWMI.ExecQuery("Select * from MicrosoftDNS_Server")
If (Err <> 0) Then Call ThrowScriptErrorAndAbort("Unable to query MicrosoftDNS_Server class.")
For Each objServer In colServers
objServer.StartScavenging
Next
WScript.Echo "Scavening successfully started."
Case "clearcache"
Set colCache = objDNSWMI.ExecQuery("Select * from MicrosoftDNS_Cache")
If (Err <> 0) Then Call ThrowScriptErrorAndAbort("Unable to query MicrosoftDNS_Cache class.")
For Each objCache In colCache
objCache.ClearCache
Next
WScript.Echo "Cache successfully cleared."
Case Else
Call ThrowScriptErrorAndAbort("Bad command specified.")
End Select
Sub ThrowScriptErrorAndAbort(strMessageArg)
Dim strMessage
strMessage = ""
strMessage = strMessage & SCRIPT_NAME & " completed with an error." & VbCrLf
strMessage = strMessage & strMessageArg & VbCrLf
strMessage = strMessage & "Command: " & strCommand & VbCrLf
If Err <> 0 Then strMessage = strMessage & "Error: " & Err.Number & " - " & Err.Description & VbCrLf