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

PowerShell中使用-split处理变量关联的脚本改造求助

解决PowerShell脚本嵌套循环问题并改用单文件拆分赋值

修改后的完整脚本

# 读取合并后的格式为myid:GUID的TXT文件
$userPairs = Get-Content C:\Users\username\Downloads\UserPairs.txt

# 遍历每一行,拆分出Display和AccountID
foreach ($line in $userPairs) {
    # 按冒号拆分,限制最多拆成2部分(避免ID含冒号时出错),同时清理前后空格
    $Display, $AccountIDs = $line -split ':', 2 | ForEach-Object { $_.Trim() }

    # 构建请求头(修复原脚本引号未闭合的问题)
    $headers = [System.Collections.Generic.Dictionary[string,string]]::new()
    $headers.Add("Content-Type", "application/json")
    $headers.Add("Authorization", "Bearer XXXXXX")

    # 构建请求体(修正原脚本变量引用错误)
    $body = @"
{
`"schemas`": [`"urn:ietf:params:scim:api:messages:2.0:PatchOp`"],
`"Operations`": [
{
`"op`": `"add"`,
`"value`": {
`"members`": [
{
`"display`": `"$Display"`,
`"value`": `"$AccountIDs"`
}
]
}
}
]
}
"@

    try {
        # 发送PATCH请求并输出结果
        $response = Invoke-RestMethod '<url>' -Method 'PATCH' -Headers $headers -Body $body
        $response | ConvertTo-Json
        Write-Output "成功处理: $AccountIDs"
    }
    catch {
        Write-Error "处理$AccountIDs失败: $_"
    }
}

关键修改说明

  • 单文件拆分逻辑:
    用Get-Content读取合并后的文本文件,每行通过-split ':', 2拆分:

    • ':'指定拆分分隔符
    • 第二个参数2确保只拆成两部分,避免GUID中意外出现冒号导致拆分错误
    • 配合ForEach-Object { $_.Trim() }自动清理拆分后字符串的前后空格,兼容myid : GUID这类带空格的行格式
  • 移除嵌套循环:
    原脚本的嵌套循环会让每个Display和每个AccountId配对发送请求,这显然不符合“一一对应”的需求。改成单循环遍历每行的配对数据,确保一组Display和AccountIDs只发送一次请求。

  • 修复原脚本的bug:

    • 修正了Authorization头中未闭合的引号问题
    • 原请求体错误引用了全局变量$Display,现在改为当前循环的对应变量,确保数据正确
    • 添加try/catch块捕获请求错误,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:51:18