我有一个 PowerShell 脚本,它运行一个返回 XML 的存储过程。然后,我将 XML 导出到一个文件中,但当我打开该文件时,每行末尾都有 3 个点,并且该行不完整。这是使用out-file
.
当我使用Export-Clixml
从查询返回的 XML 被转储到名为<props>
这不是我的标签之一。
我不确定从这里到哪里以原始格式保存 XML。
我正在使用的 PowerShell 脚本与此类似:
$Date = Get-Date -format "yyyyMMdd_HHmm"
$File = "C:\Temp\MyFile"+$Date+".xml"
$Query = "exec dbo.usp_MyProc"
Invoke-Sqlcmd -Query $Query -database MyDatabase -ServerInstance MyServer | out-file $File -Encoding utf8
假设从 SQL 命令返回的 XML 是格式良好的 XML,您还可以通过 .net 的格式推送 XML 字符串(本质上是 XML 的漂亮打印)。
function Format-XML {
[CmdletBinding()]
Param ([Parameter(ValueFromPipeline=$true,Mandatory=$true)][string]$xmlcontent)
$xmldoc = New-Object -TypeName System.Xml.XmlDocument
$xmldoc.LoadXml($xmlcontent)
$sw = New-Object System.IO.StringWriter
$writer = New-Object System.Xml.XmlTextwriter($sw)
$writer.Formatting = [System.XML.Formatting]::Indented
$xmldoc.WriteContentTo($writer)
$sw.ToString()
}
$Date = Get-Date -format "yyyyMMdd_HHmm"
$File = "C:\Temp\MyFile"+$Date+".xml"
$Query = "exec dbo.usp_MyProc"
Invoke-Sqlcmd -Query $Query -database MyDatabase -ServerInstance MyServer `
| Format-XML `
| Set-Content -Path $File -Force
Export-CliXml
导出 PowerShell XML,包括类型信息,可以从磁盘加载以重新水化变量 - 因此有额外的信息。
Out-File
具有由主机 PowerShell 环境设置的默认宽度。看Get-Help Out-File -Full
.
没有 XML 格式的示例,存储 DataRow 结果并挑选 XML 列。
$Date = Get-Date -format "yyyyMMdd_HHmm"
$File = "C:\Temp\MyFile"+$Date+".xml"
$Query = "exec dbo.usp_MyProc"
$resultRow = Invoke-Sqlcmd -Query $Query -database MyDatabase -ServerInstance MyServer
$resultRow['XMLColumn'] | Set-Content -Path $File -Force
显然,您需要使用存储过程中的列名称重命名 XMLColumn。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)