PowerShell中循环匹配输出Incident ID与SystemID格式问题求助
解决PowerShell数组插值与格式输出问题
我一眼就看出问题出在PowerShell的字符串插值上啦!你当前的代码里,直接在双引号里写$arrIncidentID[$i]的时候,PowerShell会先把整个数组$arrIncidentID展开成空格分隔的字符串,再把[$i]当成普通文本拼接,这就导致了输出里的奇怪格式。
要解决这个问题,我们需要用子表达式语法$()把数组的索引操作包裹起来,让PowerShell先计算出数组对应下标的元素,再插入到字符串中。同时调整输出文本的格式,匹配你想要的样式:
$IncidentID="INC0010164~INC0010165" $arrIncidentID = $IncidentID -split '~' $SysID = "d80fd7e2dbab4300479a7e7dbf96195d~7f0f97e2dbab4300479a7e7dbf9619ec" $arrSystemID = $SysID -split '~' if ($arrIncidentID.Length -eq $arrSystemID.Length) { for ($i=0; $i -lt $arrIncidentID.length; $i++) { # 用$()包裹数组索引操作,确保正确插值单个元素 "Incident ID $($i+1): - $($arrIncidentID[$i])" "SystemID $($i+1): - $($arrSystemID[$i])" } }
关键修正点:
- 把
$arrIncidentID[$i]改成$($arrIncidentID[$i]),让PowerShell先执行索引获取单个元素,再插入字符串 - 用
$($i+1)来生成从1开始的序号(因为你的预期输出是从1计数,而数组下标从0开始) - 调整了输出文本的格式,和你想要的样式完全匹配
运行这段代码后,你会得到预期的输出:
Incident ID 1: - INC0010164
SystemID 1: - d80fd7e2dbab4300479a7e7dbf96195d
Incident ID 2: - INC0010165
SystemID 2: - 7f0f97e2dbab4300479a7e7dbf9619ec
内容的提问来源于stack exchange,提问作者NottyHead
相关产品推荐
相关产品推荐

