PowerShell如何从CSV读取值替代手动硬编码的连接器配置值
问题描述
现有PowerShell脚本通过硬编码方式定义了2个阻塞连接器的自定义对象配置,需要将硬编码的配置值改为从CSV文件读取,保证最终输出格式和期望结果完全一致。
原硬编码脚本
#Value 1 $blockedConnector1 = [pscustomobject]@{ id = "/providers/Microsoft.PowerApps/apis/shared_salesforce" name = "Salesforce" type = "Microsoft.PowerApps/apis" } #value 2 $blockedConnector2 = [pscustomobject]@{ id = "/providers/Microsoft.PowerApps/apis/shared_postgresql" name = "PostgreSQL" type = "Microsoft.PowerApps/apis" } #Grouping of Connectors $blockedConnectors = @() $blockedConnectors += $blockedConnector1 $blockedConnectors += $blockedConnector2 $blockedConnectorGroup = [pscustomobject]@{ classification = "Blocked" connectors = $blockedConnectors } $blockedConnectorGroup | Format-List
期望输出
classification : Blocked connectors : {@{id=/providers/Microsoft.PowerApps/apis/shared_salesforce; name=Salesforce; type=Microsoft.PowerApps/apis}, @{id=/providers/Microsoft.PowerApps/apis/shared_postgresql; name=PostgreSQL;type=Microsoft.PowerApps/apis}}
实现方案
- 准备CSV配置文件
新建CSV文件(示例命名为BlockedConnectors.csv),列名和连接器的id、name、type三个属性一一对应,内容格式如下:
id,name,type /providers/Microsoft.PowerApps/apis/shared_salesforce,Salesforce,Microsoft.PowerApps/apis /providers/Microsoft.PowerApps/apis/shared_postgresql,PostgreSQL,Microsoft.PowerApps/apis
后续维护阻塞连接器列表时,直接编辑该CSV文件即可,无需修改脚本代码。
- 替换脚本硬编码逻辑
删除原脚本中手动定义单个连接器对象、手动拼接数组的冗余代码,改用Import-Csvcmdlet直接读取CSV生成结构一致的连接器对象数组,再组装最终分组对象输出,修改后的完整代码如下:
# 将路径替换为你的CSV文件实际存放路径 $blockedConnectors = Import-Csv -Path ".\BlockedConnectors.csv" # 组装阻塞连接器分组配置 $blockedConnectorGroup = [pscustomobject]@{ classification = "Blocked" connectors = $blockedConnectors } # 按要求格式输出结果 $blockedConnectorGroup | Format-List
运行修改后的脚本,输出结果与期望格式完全一致。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

