1

I'd like to take my tasks on a non-clustered server, and import them as clustered tasks on a new cluster that has been built and tested.

Here's what I have tried:

cls $xmlFilename="i:\Scripts\ImportScheduledTasks\CleaupMessageLog.xml" $xmlContents = get-content $xmlFilename Register-ClusteredScheduledTask -TaskName "TestXMLTask" -TaskType AnyNode -Xml $xmlContents 

The XML imports okay into the Windows Task Scheduler, but then it is not a "Clustered" task.

Here is the error I get when I run the above code:

Register-ClusteredScheduledTask : Cannot process argument transformation on parameter 'Xml'. Cannot convert value to type System.String. At C:\Users\nwalters\Documents\TestWebSampleCode4FromXML.ps1:4 char:80 + Register-ClusteredScheduledTask -TaskName "TestXMLTask" -TaskType AnyNode -Xml $ ... + ~ + CategoryInfo : InvalidData: (:) [Register-ClusteredScheduledTask], ParameterBindingArgumen tTransformationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Register-ClusteredScheduledTask 

Thinking that it wants an XML Doc, I also tried this:

cls $xmlFilename="i:\Scripts\ImportScheduledTasks\CleaupMessageLogUTF8.xml" $xmlContents = get-content $xmlFilename $xmlDoc = [xml] (get-content $xmlFilename) $test = $xmlDoc.OuterXml #Write-Host $test Register-ClusteredScheduledTask -TaskName "TestXMLTask" -TaskType AnyNode -Xml $xmlDoc 

I open the file, changed UTF16 to UTF8 and resaved it, shut the different filename from the first example.

Error:

Register-ClusteredScheduledTask : The task XML is malformed. (1,2)::ERROR: incorrect document syntax At C:\Users\nwalters\Documents\TestWebSampleCode4FromXML.ps1:7 char:1 + Register-ClusteredScheduledTask -TaskName "TestXMLTask" -TaskType AnyNode -Xml $ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (PS_ClusteredScheduledTask:Root/Microsoft/...edScheduledTask) [Register-ClusteredScheduledTask], CimException + FullyQualifiedErrorId : HRESULT 0x8004131a,Register-ClusteredScheduledTask 

If the XML is really malformed, then how was I able to load it and get to the .OuterXml?

1 Answer 1

3

The -Xml parameter expects the xml input as a string.

Get-Content, by default, returns an array of strings (one for each line), which is why the first error is thrown.

To get around this, use the -Raw parameter when calling Get-Content to have it return a single string:

$xmlContents = Get-Content $xmlFilename -Raw 

Prior to PowerShell 3.0, you can achieve the same thing by piping the string array to Out-String:

$xmlContents = Get-Content $xmlFilename | Out-String 
1
  • That got past XML problem, now getting same error as reported here: serverfault.com/questions/623407/… (when not using XML). I thought maybe XML would be the way to get around the other error. Commented Aug 27, 2014 at 13:43

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.