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

如何将指定C#代码转换为PowerShell脚本?求转换工具

关于C#转PowerShell的工具及转换后的脚本

转换工具说明

没有能完全精准转换的自动工具,因为C#和PowerShell的执行模型、语法细节差异较大,自动转换的代码通常需要手动调整才能正常运行。如果尝试自动转换,可以试试基于Roslyn的代码转换工具,但最终还是建议手动适配逻辑,尤其是涉及异步操作、对象处理的场景。

转换后的PowerShell脚本

# 假设$tId是预先定义的租户ID变量,若未定义请自行赋值
$tenantId = $tId

# 获取命令行参数:注意PowerShell的$args数组不包含脚本自身路径,对应C#的Environment.GetCommandLineArgs()时需调整索引
# C#中Environment.GetCommandLineArgs()[0]是程序路径,[1]是第一个用户参数,以此类推
$clientId = $args[4]    # 对应C#的[5]
$clientSecret = $args[5]# 对应C#的[6]
$audience = $args[1] + "/" # 对应C#的[2]
$domainUrl = $args[6]   # 对应C#的[7]

# 初始化HttpClient
$httpClient = New-Object System.Net.Http.HttpClient
$httpClient.BaseAddress = [System.Uri]$domainUrl

# 构造请求体,使用ConvertTo-Json避免字符串拼接的转义问题
$requestBody = @{
    client_id     = $clientId
    client_secret = $clientSecret
    audience      = $audience
    grant_type    = "client_credentials"
    TenantId      = $tenantId
} | ConvertTo-Json

$jsonContent = New-Object System.Net.Http.StringContent($requestBody, [System.Text.Encoding]::UTF8, "application/json")

$relativeUrl = "oauth/token"
$httpResponse = $httpClient.PostAsync($relativeUrl, $jsonContent).Result

if ($httpResponse.IsSuccessStatusCode) {
    $jsonString = $httpResponse.Content.ReadAsStringAsync().Result
    # 方案1:使用Newtonsoft.Json(需先安装模块:Install-Module Newtonsoft.Json)
    $obj = [Newtonsoft.Json.Linq.JObject]::Parse($jsonString)
    $accessToken = $obj["access_token"].ToString()
    # 方案2:使用PowerShell内置转换(无需额外依赖)
    # $obj = $jsonString | ConvertFrom-Json
    # $accessToken = $obj.access_token
    return $accessToken
} else {
    Write-Host "Error generating token."
    # C#中的ExitCode.TokenError是自定义枚举,PowerShell需替换为实际错误码数值,例如exit 1
    exit 1
}

脚本补充说明

  1. 命令行参数索引:PowerShell的$args不包含脚本路径,需根据你的实际参数输入顺序调整索引值。
  2. JSON构造:用ConvertTo-Json替代手动拼接字符串,可避免引号转义错误。
  3. JSON解析:提供两种方案,内置转换无需额外依赖,Newtonsoft.Json则更贴近原C#逻辑。
  4. 退出码:原C#的ExitCode.TokenError是自定义枚举,PowerShell中需替换为实际业务约定的错误码数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:25:18