Форматирование полей XML из CSV с PowerShell - PullRequest
0 голосов
/ 05 июня 2018

У меня есть CSV hostname,ip маршрутизаторов в нашей сети, и я хочу создать шаблон XML для импорта всех этих данных в замазку.

У меня есть требуемая XML-схема

Мой существующий план состоял в том, чтобы импортировать CSV и назвать его $router, затем поместить $router.hostname и $router.ip в сценарий, но я не могуПодумайте, как сделать так, чтобы текст заполнялся значениями csv, и как затем экспортировать его как XML.

В идеале он будет выводить каждый xml как файл на маршрутизатор $hostname.xml.

У кого-нибудь есть указания на то, как заставить это работать?У меня достаточно опыта работы с PS и CSV, но я не знаю XML, я знаю, что для этого понадобится foreach, но я довольно новичок во всем этом.

Спасибо, Сэм

$router=import-csv C:\Users\Admin\Desktop\RouterIPHost.csv

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<root expanded="True" name="Test MSP" type="database" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<connection name=($router.hostname) type="PuTTY">
<name>$Putty.name </name>
<protocol>Telnet</protocol>
<host>($router.ip)</host>
<port>23</port>
<session>Default Settings</session>
<connectiontimeout>1500</connectiontimeout>
<logintimeout>1000</logintimeout>
<passwordtimeout>1000</passwordtimeout>
<commandtimeout>1000</commandtimeout>
<postcommands>False</postcommands>
</connection>
</root>

Export-Clixml -path "C:\Users\PRTG_Admin\Desktop\xmlrouter.xml"

1 Ответ

0 голосов
/ 05 июня 2018

Предполагая, что формат CSV:

hostname,ip
router_site_london,192.168.0.1
router_site_paris,192.168.1.1
router_site_newyork,192.168.2.1

Вы можете обрабатывать файлы как обычный текст и просто создавать их в цикле из многострочной строки, используя переменные:

$routers = Import-Csv C:\Users\Admin\Desktop\RouterIPHost.csv

foreach ($router in $routers) {

$router_hostname = $router.hostname
$router_ip = $router.ip

$xml = @"
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<root expanded="True" name="Test MSP" type="database" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<connection name=$router_hostname type="PuTTY">
<name>$router_hostname</name>
<protocol>Telnet</protocol>
<host>$router_ip</host>
<port>23</port>
<session>Default Settings</session>
<connectiontimeout>1500</connectiontimeout>
<logintimeout>1000</logintimeout>
<passwordtimeout>1000</passwordtimeout>
<commandtimeout>1000</commandtimeout>
<postcommands>False</postcommands>
</connection>
</root>
"@

$xml | Out-File -FilePath C:\folder\putty_routers\$router_hostname.xml
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...