You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何关联匹配GetReportServerUrls返回的两个关联数组属性

实现方案

针对两个一一对应数组的关联取值需求,有两种更优的实现思路,核心优化点是避免重复调用GetReportServerUrls()方法,减少不必要的性能开销,也规避多次调用可能出现的结果不一致问题。

方案1:构建映射哈希表(推荐,适合多场景复用)

将两个数组合并为「应用名-URL」的哈希表,后续取值直接通过键查询,可读性和可维护性更高,也方便后续获取其他应用的对应URL:

$rsCnfg = Get-WmiObject -NameSpace "root\Microsoft\SqlServer\ReportServer\$rsWmiN\$rsWmiV" -class MSReportServer_Instance -ComputerName localhost
# 仅调用一次方法,缓存返回结果
$urlResult = $rsCnfg.GetReportServerUrls()
# 构建映射哈希表
$appUrlMap = @{}
for ($i = 0; $i -lt $urlResult.Length; $i++) {
    $appUrlMap[$urlResult.ApplicationName[$i]] = $urlResult.URLs[$i]
}
# 直接取值
$rswsURL = $appUrlMap["ReportServerWebService"]

执行后输出$rswsURL即可得到对应的服务地址。

方案2:优化原索引写法(适合单次取值)

如果只需要单次获取ReportServerWebService的URL,可以简化原有逻辑,仅调用一次方法完成索引查找和取值:

$rsCnfg = Get-WmiObject -NameSpace "root\Microsoft\SqlServer\ReportServer\$rsWmiN\$rsWmiV" -class MSReportServer_Instance -ComputerName localhost
$urlResult = $rsCnfg.GetReportServerUrls()
$rswsURL = $urlResult.URLs[[array]::IndexOf($urlResult.ApplicationName, "ReportServerWebService")]

内容的提问来源于stack exchange,提问作者ToToRoYN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:27:02