Как получить параметры из XML и выполнить список exe? - PullRequest
1 голос
/ 08 марта 2012

Я выполняю исполняемый файл с параметрами, подобными приведенным ниже (я использую powershell).

$path="C:\Program Files\RobWare\RVTools"


$VCServer="15.3.3.3"
$VCServer2="16.5.4.4"
$AttachmentFile=$vcserver.xls

&"$path\rvtools.exe" -s $VCServer -u user-p password-c ExportAll2xls -d $AttachmentDir -f $AttachmentFile
&"$path\rvtools.exe" -s $VCServer2 -u user2 -p password123 -c ExportAll2xls -d $AttachmentDir -f $AttachmentFile

Поскольку у меня много VCserver, я подумал, что лучше иметь файл XML, а затем выполнить этот исполняемый файл длявсе VCserver.

Я хотел бы написать xml-файл, в котором все параметры будут указаны следующим образом.

<Host>
  <IP>15.3.3.3</IP>
  <User>user</User>
  <Password>password</Password>
</Host>

<Host>
  <IP>16.3.3.3</IP>
  <User>user</User>
  <Password>password</Password>
</Host>

Затем вызвать exe и передать эти параметры из XML.Как это сделать?

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

используя XML-файл, подобный следующему:

<rvToolsParams>
  <Host> 
    <IP>15.3.3.3</IP> 
    <User>user</User> 
    <Password>password</Password> 
  </Host> 
  <Host> 
    <IP>16.3.3.3</IP> 
    <User>user</User> 
    <Password>password</Password> 
  </Host>
</rvToolsParams>

Вызывается здесь под rvtools.xml, вы также можете сделать это следующим образом:

$xml = [XML](Get-Content C:\temp\rvtools.xml)
$xml.rvToolsParams.host

IP                                      User                                    Password
--                                      ----                                    --------
15.3.3.3                                user                                    password
16.3.3.3                                user                                    password

$xml.rvToolsParams.host | % {& "$path\rvtools.exe" -s $_.IP -u $_.User -p $_.Password -c ExportAll2xls -d $AttachmentDir -f $AttachmentFile }
15.3.3.3
user
password
16.3.3.3
user
password

Или в сценарии

foreach ($host in $xml.rvToolsParams.host)
{
  $host.IP
  ...
}
3 голосов
/ 08 марта 2012

Вы можете просмотреть свой XML-файл следующим образом:

[xml] $xml = @'
<Hosts>
    <Host>
        <IP>15.3.3.3</IP>
        <User>user</User>
        <Password>password</Password>
    </Host>
</Hosts>
'@

$xml.SelectNodes('//Host') | % {
    & "$path\rvtools.exe" -s $_.IP -u $_.User -p $_.Password -c ExportAll2xls -d $AttachmentDir -f $AttachmentFile
}

Это создает объект XMLDocument и использует запрос XPath для получения коллекции узлов, которые соответствуют запросу, и выполняет итерацию по каждому из них. PowerShell автоматически превратит дочерние узлы в свойства узла.

0 голосов
/ 08 марта 2012

Я бы построил хеш-таблицу из xml и разделил ее.

$params = @{
   Server = $xml.Host.IP
   User = $xml.Host.User
   Password = $xml.Host.Password
    }
 &"$path\rvtools.exe" @params -c  ExportAll2xls -d $AttachmentDir -f $AttachmentFile 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...