【问题标题】:To create XML output file from PowerShell script从 PowerShell 脚本创建 XML 输出文件
【发布时间】:2019-10-07 19:16:00
【问题描述】:

从 PowerShell 脚本创建以下 XML 输出:

<Trigger>
  <Value1>20181231</value1> 
  <value2>20180531</>
  <value3>20180531</value3>
  <value4>FINANCE</value4>
  <value5 />
  <value6 />
</Trigger>

Value1 是今年的结束日期。值 2 和值 3 是本月的结束日期。如何从 PowerShell 脚本创建上述 XML?

【问题讨论】:

  • 你试过什么?有作品要展示吗?你到底卡在哪一部分? Stack Overflow 不是代码编写服务。如果您需要帮助学习如何编码或排除故障,那么这里就是您的最佳选择。如果您需要从头开始编写代码,那么您应该聘请开发人员。
  • Calculate the dates 并将它们插入到您写入文件的double quoted here string 中。
  • 如果 xml 有效会有所帮助。

标签: xml powershell powershell-2.0


【解决方案1】:

这是一个使用 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。

【讨论】:

    【解决方案2】:
    ## Q:\Test\2019\05\21\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 :
    

    【讨论】:

      【解决方案3】:

      嗯,这是加载和保存 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>
      

      但事情没那么简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 2020-12-26
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多