Я несколько лет баловался с PowerShell, но никогда не имел дело с XML, и мне трудно найти решение проблемы, с которой я сталкиваюсь. Я читал через бесчисленные темы на различных форумах, и я думаю, что по общему признанию я просто недостаточно понимаю о том, что я пытаюсь сделать sh, или что другие люди объясняют в других темах.
Я работаю над сценарием PowerShell, написанным кем-то другим, который в основном собирает данные таблиц и экспортирует их в файл XML. Экспортируемые данные таблицы можно использовать в их текущем состоянии, но для некоторых значений, которые НЕ получены из таблиц, мне нужно найти простой способ изменения имени узла XML.
My Пример сценария PS выглядит так:
$StartDate = [Management.ManagementDateTimeConverter]::ToDateTime($SYSINFO.LastBootUpTime)
$StartDate = "{0:G}" -F $StartDate
$EndDate = "{0:G}" -F (Get-Date)
$UPTIME = New-TimeSpan -Start $StartDate -End $EndDate
# Format Uptime for "DD:HH:MM:SS.MMMM"
$DispTime = "{0:G}" -F $UPTIME
# Remove .MMMM (Milliseconds)
$DispTime = $DispTime.Split('.')[0]
$DispTime = "$DispTime"
$DispTime | ConvertTo-XML -As String | Out-File -LiteralPath (C:\Scripts\ + "Uptime_Status.xml")
Мой XML вывод в конечном итоге выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.String">0:06:56:39</Object>
</Objects>
Мне нужно изменить тег <Object Type="System.String">
на что-то еще, например <UPTIME>0:06:56:39</UPTIME>
, или, возможно, даже <Object Type="System.String" Name="Uptime">0:06:56:39</Object>
Цель состоит в том, чтобы отличить имя узла от других тегов XML, которые будут похожи на это, когда я использую не-таблицу данные. Я также вижу возможность необходимости повторять это, поэтому мне было интересно, может ли быть опция, просто использующая значение переменной PS в качестве имени узла XML во всем файле XML, автоматически. Так, например, если я работаю с 20 фрагментами данных и, возможно, я помечаю данные одного из значений, которые должны быть записаны в XML, как $DispTime
, возможно, у меня также может быть другая переменная, такая как $DispTime_NodeName = "Uptime"
, и тогда результирующее XML может быть просто: <Uptime>0:06:56:39</Uptime>
. Таким образом, в основном сценарий PS должен был бы найти соответствующее имя переменной, которое включает в себя «_NodeName», а затем использовать значение THAT в качестве XML имени узла. Я сумасшедший? Это невозможно? Я слишком обдумываю это?
Большое спасибо всем, кто готов помочь .... Я был бы очень признателен за любую solid помощь, которую я могу получить. Просто имейте в виду, я все еще очень начинающий в этом :) Ха-ха