Чтобы создать выходной файл XML из скрипта PowerShell - PullRequest
0 голосов
/ 21 мая 2019

Чтобы создать приведенный ниже XML-вывод из скрипта PowerShell:

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

Значение1 - дата окончания этого года. Значение 2 и значение 3 - дата окончания месяца. Как создать вышеуказанный XML из скрипта PowerShell?

Ответы [ 3 ]

1 голос
/ 21 мая 2019
## 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 :
1 голос
/ 21 мая 2019

Вот решение с использованием 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 в текущем каталоге.

0 голосов
/ 21 мая 2019

Ну, вот как загрузить и сохранить 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>

Но это не так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...