: Powershell Register-ClusteredScheduledTask do XML

1

Gostaria de tirar minhas tarefas em um servidor não clusterizado e importá-las como tarefas em cluster em um novo cluster que foi criado e testado.

Veja o que tentei:

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

O XML importa bem para o Agendador de Tarefas do Windows, mas não é uma tarefa "Clusterizada".

Aqui está o erro que recebo quando executo o código acima:

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

Pensando que quer um Doc XML, eu também tentei isso:

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

Eu abro o arquivo, mudo o UTF16 para o UTF8 e gravei novamente o nome do arquivo diferente do primeiro exemplo.

Erro:

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

Se o XML estiver realmente malformado, como consegui carregá-lo e acessar o .OuterXml?

    
por NealWalters 25.08.2014 / 23:22

1 resposta

3

O parâmetro -Xml espera a entrada xml como uma string.

Get-Content , por padrão, retorna uma matriz de strings (uma para cada linha), e é por isso que o primeiro erro é lançado.

Para contornar isso, use o parâmetro -Raw ao chamar Get-Content para que ele retorne uma única string:

$xmlContents = Get-Content $xmlFilename -Raw

Antes do PowerShell 3.0, você pode obter a mesma coisa canalizando a matriz de string para Out-String :

$xmlContents = Get-Content $xmlFilename | Out-String
    
por 26.08.2014 / 03:22