从 PowerShell 脚本创建 XML 输出文件
To create XML output file from PowerShell script
从 PowerShell 脚本创建以下 XML 输出:
<Trigger>
<Value1>20181231</value1>
<value2>20180531</>
<value3>20180531</value3>
<value4>FINANCE</value4>
<value5 />
<value6 />
</Trigger>
Value1 是今年的结束日期。值 2 和值 3 是本月的结束日期。如何从 PowerShell 脚本创建以上 XML?
嗯,这是加载和保存 xml:
的方法
[xml]$xml = get-content file.xml
$xml.save('file.xml')
还有一个convertto-xml命令:
$xml = [pscustomobject]@{Value1='20181231'} | ConvertTo-Xml -NoTypeInformation
$xml.save('file.xml')
get-content file.xml
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object>
<Property Name="Value1">20181231</Property>
</Object>
</Objects>
但这并不是那么简单。
## Q:\Test19\SO_56237520.ps1
$ThisYearEndDate = (Get-Date -Month 1 -Day 1).AddYears(1).AddDays(-1).ToString('yyyyMMdd')
$ThisMonthEndDate= (Get-Date -Day 1).AddMonths(1).AddDays(-1).ToString('yyyyMMdd')
$File = '.\Sample.xml'
@"
<Trigger>
<Value1>$ThisYearEndDate</Value1>
<value2>$ThisMonthEndDate</value2>
<value3>$ThisMonthEndDate</value3>
<value4>FINANCE</value4>
<value5 />
<value6 />
</Trigger>
"@ | Set-Content $File -Encoding UTF8
$XML = [XML](Get-Content $File)
$XML.Trigger
示例输出
> .\SO_56237520.ps1
Value1 : 20191231
value2 : 20190531
value3 : 20190531
value4 : FINANCE
value5 :
value6 :
这是一个使用 XElement 的解决方案:
using namespace system.xml.linq
$CurrentDate = Get-Date
$YearEnd = Get-Date -Year $CurrentDate.Year -Month 12 -Day 31 -Format yyyyMMdd
$MonthEnd = Get-Date -Year $CurrentDate.Year -Month $CurrentDate.Month -Day ([datetime]::DaysInMonth($CurrentDate.Year,$CurrentDate.Month)) -Format yyyyMMdd
$x = [xelement]::new("Trigger",
[xelement]::new("Value1",$YearEnd),
[xelement]::new("Value2",$MonthEnd),
[xelement]::new("Value3",$MonthEnd),
[xelement]::new("Value4","FINANCE"),
[xelement]::new("Value5",""),
[xelement]::new("Value6",""))
$x.tostring() | Set-Content -Path "x.xml"
这会将 XML 结构输出到当前目录中的文件 x.xml。
从 PowerShell 脚本创建以下 XML 输出:
<Trigger>
<Value1>20181231</value1>
<value2>20180531</>
<value3>20180531</value3>
<value4>FINANCE</value4>
<value5 />
<value6 />
</Trigger>
Value1 是今年的结束日期。值 2 和值 3 是本月的结束日期。如何从 PowerShell 脚本创建以上 XML?
嗯,这是加载和保存 xml:
的方法[xml]$xml = get-content file.xml
$xml.save('file.xml')
还有一个convertto-xml命令:
$xml = [pscustomobject]@{Value1='20181231'} | ConvertTo-Xml -NoTypeInformation
$xml.save('file.xml')
get-content file.xml
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object>
<Property Name="Value1">20181231</Property>
</Object>
</Objects>
但这并不是那么简单。
## Q:\Test19\SO_56237520.ps1
$ThisYearEndDate = (Get-Date -Month 1 -Day 1).AddYears(1).AddDays(-1).ToString('yyyyMMdd')
$ThisMonthEndDate= (Get-Date -Day 1).AddMonths(1).AddDays(-1).ToString('yyyyMMdd')
$File = '.\Sample.xml'
@"
<Trigger>
<Value1>$ThisYearEndDate</Value1>
<value2>$ThisMonthEndDate</value2>
<value3>$ThisMonthEndDate</value3>
<value4>FINANCE</value4>
<value5 />
<value6 />
</Trigger>
"@ | Set-Content $File -Encoding UTF8
$XML = [XML](Get-Content $File)
$XML.Trigger
示例输出
> .\SO_56237520.ps1
Value1 : 20191231
value2 : 20190531
value3 : 20190531
value4 : FINANCE
value5 :
value6 :
这是一个使用 XElement 的解决方案:
using namespace system.xml.linq
$CurrentDate = Get-Date
$YearEnd = Get-Date -Year $CurrentDate.Year -Month 12 -Day 31 -Format yyyyMMdd
$MonthEnd = Get-Date -Year $CurrentDate.Year -Month $CurrentDate.Month -Day ([datetime]::DaysInMonth($CurrentDate.Year,$CurrentDate.Month)) -Format yyyyMMdd
$x = [xelement]::new("Trigger",
[xelement]::new("Value1",$YearEnd),
[xelement]::new("Value2",$MonthEnd),
[xelement]::new("Value3",$MonthEnd),
[xelement]::new("Value4","FINANCE"),
[xelement]::new("Value5",""),
[xelement]::new("Value6",""))
$x.tostring() | Set-Content -Path "x.xml"
这会将 XML 结构输出到当前目录中的文件 x.xml。