2016-10-08 2 views
0

Есть ли способ использовать Powershell 2.0 для автоматизации удаления ядер Solr, которые начинаются с заданного префикса? Например, я хотел бы удалить все ядра, которые начинаются с «some_prefix». Я использую Solr 4.10.1, и хотите удалить ядра со следующим API вызова:Использовать Powershell для удаления ядер Solr, начиная с префикса

http://localhost:8983/solr/admin/cores?action=UNLOAD&deleteIndex=true&deleteInstanceDir=true&core=some_prefix_etc 

ответ

0

Этот сценарий будет работать:

param ($prefix = $(throw "-prefix is required")) 

$client = (New-Object System.Net.WebClient) 
[xml]$coresXML = $client.DownloadString("http://localhost:8983/solr/admin/cores") 
$cores = $coresXML.response.lst[2].lst | % {$_.name} 
$success = 0 
$error = 0 

foreach ($core in $cores) { 
    if ($core.StartsWith($prefix)) { 
    $url = "http://localhost:8983/solr/admin/cores?action=UNLOAD&deleteIndex=true&deleteInstanceDir=true&core=$core" 
    write-host "Deleting $core :" 
    $client.DownloadString($url) 
    if ($?) {$success++} 
    else $error++ 
    } 
} 
write-host "Deleted $success cores. Had $error errors." 

См this о том, как синтаксис для извлечения ядер в список работает, и this по параметрам API-интерфейса Solr UNLOAD для удаления ядра.

Смежные вопросы