#powershell #type-accelerators
#powershell #тип-ускорители
Вопрос:
Я получил путь к файлу к xml-ресурсу, запросив аргументы планировщика задач. Я хотел бы передать пути к этим файлам в [xml], чтобы возвращать данные с помощью XPath.
В Интернете я вижу, что используются ускорители и переменные, например
$xml = [XML](Get-Content .Test.xml)
пробовал использовать конвейер для преобразования в xml, но это XML-объект, содержащий путь к файлу, поэтому мне нужно преобразовать в [xml] — в надежде сделать это в конвейере, потенциально для> 1 xmldocument
Возможно ли передать в [ускорители типов] ? Должен ли я передавать данные в New-Object или Tee-Variable, как требуется?
Я надеюсь, что в конечном итоге смогу создать однострочный файл для опроса нескольких узлов (например, LastRan, lastResult)
в настоящее время у меня есть это, которое работает только для одного
([xml](Get-Content ((Get-ScheduledTask -TaskPath *mytask* | select -First 1).Actions.Arguments | % {$_.Split('"')[-2]}))).MyDocument.LastRan
возвращает значение LastRan из узла MyDocument .
Заранее спасибо
Комментарии:
1. Для меня непонятно, о чем вы спрашиваете, возможно, вы можете предоставить образец XML-файла и объяснить, чего вы ждете.
Ответ №1:
Если вы хотите использовать конвейерный ввод, вам нужно создать функцию и установить атрибут параметра ValueFromPipeline
Function Convert-XML {
Param(
[Parameter(ValueFromPipeline)]$xml
)
process{
[xml]$xml
}
}
Тогда вы могли бы взять содержимое XML-файла (все сразу, а не построчно)
Get-Content .Test.xml -Raw | Convert-XML
Конечно, чтобы получить свой один лайнер, вы, вероятно, захотите добавить логику для этого в функцию. Однако именно так вы бы обрабатывали ввод по конвейеру.
Комментарии:
1. Но имейте в виду… это не будет объединять ваши XML-файлы в корневом узле.. Вы получаете только коллекцию XML-объектов. И «ConvertFrom-Xml» было бы лучше.