#powershell #solr #powershell-2.0 #solr4
#powershell #solr #powershell-2.0 #solr4
Вопрос:
Есть ли способ использовать Powershell для получения списка ядер Solr, запущенных в моем локальном экземпляре Solr? Я использую Solr 4.10.1 и использую Powershell 2.0.
Я хотел бы создать текстовый файл с именами ядер:
somecore1
somecore2
etc.
Я смог получить список своих ядер в формате XML, нажав на этот URL: http://localhost:8983/solr/admin/cores Соответствующими деталями возвращаемого XML-файла являются:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2663</int>
</lst>
<str name="defaultCoreName">collection1</str>
<lst name="initFailures"/>
<lst name="status">
<lst name="somecore1">
<!-- Details removed -->
</lst>
<lst name="somecore2">
<!-- Details removed -->
</lst>
</lst>
</response>
Ответ №1:
Сначала вам нужно загрузить XML-ответ в переменную XML:
[xml]$cores = (New-Object System.Net.WebClient).DownloadString("http://localhost:8983/solr/admin/cores")
Теперь вы можете вывести список ядер с помощью этого синтаксиса:
$cores.response.lst[2].lst | % {$_.name}
Этот синтаксис гласит: «В XML-документе получите дочерний элемент корневого элемента «response», затем возьмите третий дочерний элемент «lst», затем выполните итерацию по его дочерним элементам и выведите атрибут «name».
Чтобы сохранить как файл, перенаправьте:
$cores.response.lst[2].lst | % {$_.name} > c:tempcores.txt
Примечания:
- Для получения дополнительной информации о синтаксическом анализе XML в Powershell см. https://blogs.technet.microsoft.com/heyscriptingguy/2012/03/26/use-powershell-to-parse-an-xml-file-and-sort-the-data/
- Мне пришлось использовать WebClient из-за моей версии Powershell. В версии 3.0 есть команда Invoke-RestMethod . См. https://superuser.com/questions/344927/powershell-equivalent-of-curl