使用traceprt在powershell中将ETL转换为XML,在参数中使用破折号和空格

时间:2017-11-03 17:04:44

标签: powershell

我正在努力为PowerShell中的tracerpt.exe命令组装一个包装器。我已经尝试了所有常规技巧来获取命令参数中的空格但是,如果包含带引号的参数,则tracerpt.exe命令会出错。似乎我的破折号也被剥夺了,我不知道为什么。如果有人知道我如何格式化参数以保持破折号和空格而不发送引号并且真的很有帮助。

另外,如果有人知道在PowerShell中将ETL转换为XML格式的更好方法,我将会选择不同的解决方案。

Function Convert-ETLtoXML
{
  param
  (
    [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
    [string]$ETLinputFile

  )
    $space = [char]32
    [string]$confrimOverWrite = '-y'
    [String]$format = "-of" + $space + "XML"
    [string]$outfile = "-o" +$space + "xxyy.xml"
    [string]$command = 'C:\Windows\system32\tracerpt.exe'
    Write-Host -ForegroundColor Red  "$command $ETLinputFile $confrimOverWrite $format $outfile"

    & $command $ETLinputFile $confrimOverWrite $format $outfile


  }
  Convert-ETLtoXML -ETLinputFile .\DEMO.etl

输出:

C:\Windows\system32\tracerpt.exe .\DEMO.etl -y -of XML -o xxyy.xml
Argument 'of XML' is unknown.
Argument 'o xxyy.xml' is unknown.

错误: 参数不正确。

1 个答案:

答案 0 :(得分:0)

这似乎对我有用:

Function Convert-ETLtoXML
{
    param
    (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [string]$ETLinputFile
    )
    $Command = {C:\Windows\system32\tracerpt.exe $ETLinputFile -y -of XML -o xxyy.xml}

    Write-Host -Object $Command.ToString() -ForegroundColor Red 

    $Command.Invoke()
}
Convert-ETLtoXML -ETLinputFile .\DEMO.etl