получить содержимое строки номер 45 в файле в последнем профиле, подключенном на удаленной позиции - PullRequest
0 голосов
/ 08 мая 2020

I wi sh для настройки сценария PowerShell, который позволит получить содержимое строки номер 45 в файле, в последнем профиле, подключенном к удаленной позиции, рассматриваемый путь: USERPROFILE \ AppData \ Roaming \ Avaya \ one-X Agent \ 2.5 \ Config. xml

цель состоит в том, чтобы содержимое этой строки было для нескольких позиций (около 500) в компьютерном парке

это это файл xml:

<ConfigData xmlns="http://xml.avaya.com/endpointAPI">
<version>1</version>
<parameter>
<name>OwnIPAddress</name>
<value>10.87.1.254</value>
</parameter>
<parameter>
<name>SipProxyServerList</name>
<value>10.69.76.10</value>
</parameter>
<parameter>
<name>AlternateServersList</name>
<value>10.69.76.10;</value>
</parameter>
<parameter>
<name>DialPlanCountryCode</name>
<value>
    </value>
</parameter>
<parameter>
<name>DialPlanInternationalAccessCode</name>
<value>
    </value>
</parameter>
<parameter>
<name>DialPlanLongDistanceAccessCode</name>
<value>
    </value>
</parameter>
<parameter>
<name>DialPlanOutsideLineAccessCode</name>
<value>
    </value>
</parameter>
<parameter>
<name>RtpPortLow</name>
<value>2048</value>
</parameter>
<parameter>
<name>RtpPortRange</name>
<value>63487</value>
</parameter>
<parameter>
<name>PrevSipUserAccount</name>
<value>2729350</value>
</parameter>
<parameter>
<name>AlternateServerListTimeOut</name>
<value>30</value>
</parameter>
<parameter>
<name>DialPlanNationalPhoneNumbLengthList</name>
<value>
    </value>
</parameter>
<parameter>
<name>DialPlanExtensionLengthList</name>
<value>
    </value>
</parameter>
<parameter>
<name>AlternateGKAddressList</name>
<value>10.69.76.10</value>
</parameter>
</ConfigData>

, и я нашел эту команду:

(Get-Content -Path "$env:USERPROFILE\AppData\Roaming\Avaya\one-X Agent\2.5\Config.xml" -TotalCount 45)[-1]

1 Ответ

0 голосов
/ 09 мая 2020

Приведенный ниже код найдет значение узла PrevSipUserAccount. Обратите внимание, что этот код может работать неоптимально с большими XML файлами, а return в функциях Powershell не выполняются так же, как return на таких языках, как C#.

param(
    [string] $filepath = "$PSScriptRoot\Config.xml",
    [string] $targetParamName = 'PrevSipUserAccount'
)

[xml] $xml = Get-Content $filepath
$params = $xml.ConfigData.Parameter 

$obj = @{}
foreach ($param in $params) {    
    $obj = [PSCustomObject] @{
        Name = ($param | Select-Object -ExpandProperty name).Trim()
        Value = ($param | Select-Object -ExpandProperty value).Trim()    
    }
    if ($obj.Name.Contains("$targetParamName")) {
        return $obj
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...