0

下面是我的 PowerShell 脚本,它连接到远程 SQL 服务器并将结果存储到 XML 文件中。

$SQLResult = Invoke-Sqlcmd -inputfile $inputfile -ServerInstance $ServerInstance -Database $Database -Username $Username -Password $Password 
$PropertyName = ($SQLResult | Get-Member -MemberType Property | Where {$_.Name -like "XML*"}).Name
$SQLResult.$PropertyName | Out-File -FilePath "C:\Temp\ExportFile.xml" -Force

理想情况下,它应该像这样返回干净整洁的东西(当我在 SQL Server Management Studio 中打开结果时也是如此):

<Text>
    <Data>I am happy</Data>
</Text>

但是,当我打开文件时,它给了我:

<Text><Data>I am happy</Data></Text>

我曾尝试使用Export-Clixml,但返回的 XML 被一些无意义的标签包围,这些标签<props>不是我的标签之一。

任何人都可以帮助我解决这个问题,不确定以原始格式保存它的方式。

4

1 回答 1

2

XmlWriter写回磁盘时使用 an格式化和缩进它:

# Create settings object, make sure we get the indentation
$writerSettings = [System.Xml.XmlWriterSettings]::new()
$writerSettings.Indent = $true

try{
  # Create the writer
  $writer = [System.Xml.XmlWriter]::Create("C:\Temp\ExportFile.xml", $writerSettings)

  # Convert your XML string to an XmlDocument, 
  # then save the document using the writer
  ([xml]$SQLResult.$PropertyName).Save($writer)
}
finally {
  # discard writer (closes the file handle as well)
  $writer.Dispose()
}
于 2020-08-17T18:49:04.997 回答