powershell - 在远程位置连接的最后一个配置文件中获取文件上第 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]
解决方案
下面的代码将找到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
}
}
推荐阅读
- local-storage - 如何在 Gatsby 的 LocalStorage 中使用添加和访问数据
- javascript - 通过从数组中给出的键过滤对象的值并在 jsx 中呈现它们
- kubernetes - 在 Istio Ingress 上使用letsencrypt 证书
- javascript - 为什么这个 Promise.all() 函数只返回最后解析的值?
- excel - 如何在单个公式中运行 VLOOKUPS 和计算?
- ios - 由于关闭的商店 URL,Facebook 拒绝 Facebook 登录激活
- python - Python输入多行和空格
- javascript - 如何在 JavaScript 中的哈希表上实现这个“计数器”?
- javascript - “npm start”导致错误 - ENOENT:没有这样的文件或目录... package.json
- c# - Roslyn CSharpSyntaxRewriter 修改多个类文件并生成构建,无需修改源代码