首页 > 解决方案 > 在远程位置连接的最后一个配置文件中获取文件上第 45 行的内容

问题描述

我希望设置一个powershell脚本,它将允许获取文件上第45行的内容,在远程位置连接的最后一个配置文件中,有问题的路径是:USERPROFILE \ AppData \ Roaming \ Avaya \ one- X 代理\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]

标签: powershell

解决方案


下面的代码将找到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
    }
}

推荐阅读