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

C#获取PsIntacctSdk的PowerShell查询结果及相关配置问题

你对返回对象类型的判断是正确的,目标PowerShell脚本的查询结果就是Intacct.SDK.Xml.OnlineResponse类型的实例。

疑问1:如何编写表达式将该PowerShell的查询结果存入C#变量

你需要先通过NuGet安装Microsoft.PowerShell.SDK以及Intacct SDK相关依赖,之后可以参考以下代码实现结果获取:

using System.Management.Automation;
using Intacct.SDK.Xml;

// 初始化PowerShell运行实例
using var ps = PowerShell.Create();
// 读取并加载Ps1脚本,将路径替换为你实际的脚本路径
ps.AddScript(File.ReadAllText(@"Find-IntacctSdkObject.ps1"));
// 给命令传入对应参数,根据实际需求替换参数名和参数值
ps.AddCommand("Find-IntacctSdkObject")
  .AddParameter("ObjectType", "你的查询对象类型")
  .AddParameter("Fields", new []{"字段1","字段2"});

// 执行命令获取结果
var psOutput = ps.Invoke();

// 处理执行错误
if (ps.HadErrors)
{
    foreach (var error in ps.Streams.Error)
    {
        Console.WriteLine($"执行错误:{error}");
    }
    return;
}

// 转换为强类型结果存入results变量
List<OnlineResponse> results = psOutput.Select(p => (OnlineResponse)p.BaseObject).ToList();

疑问2:要让Visual Studio识别"PowerShell"对象无报错,是否必须安装PowerShell Tool扩展?该扩展为什么是试用版?

不需要安装该试用版扩展。
C#代码中调用PowerShell的唯一编译依赖是Microsoft.PowerShell.SDK这个NuGet包,安装后即可正常识别PowerShell类及相关对象,无编译报错。
你看到的PowerShell Tool扩展是第三方提供的开发辅助工具,主要用于PowerShell脚本的语法高亮、单步调试等功能,和C#项目的编译依赖无关,试用版是该扩展的商业收费规则导致的,和微软官方SDK无关。

疑问3:是否直接创建如图所示的ps1代码文件加入C#解决方案即可?

可以直接创建ps1文件加入C#解决方案。
你只需要在ps1文件的「属性」面板中,将「复制到输出目录」选项设置为「如果较新则复制」,编译项目时脚本会自动同步到程序输出目录,你就可以通过相对路径直接读取加载脚本,不需要手动处理文件路径映射。

PowerShell代码在C#解决方案中的运行逻辑

C#项目中运行PowerShell代码的本质是通过官方PowerShell SDK在当前进程内启动一个独立的PowerShell运行时环境,加载你指定的脚本和命令执行,执行完成后PowerShell侧的返回对象会被封装为PSObject实例返回给C#层,你可以通过BaseObject属性获取原始类型实例,也可以通过Members集合动态读取对象属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:24:03