首页 新闻 会员 周边 捐助

net 5 web api 部署到iis 不能使用process 调用 bat 、cmd 、powershell 取回结果么?

0
悬赏园豆:10 [已解决问题] 解决于 2022-06-08 09:40

net 5 web api 部署到iis 不能使用process 调用 bat 、cmd 、powershell 取回结果么?

控制台能获取到结果,web api 去调用执行,获取不到结果。

iis 程序池采用默认配置

代码如下:

 

//执行获取结果    
var output1 = Cmd("powershell", "Get-Counter -Counter '\\Processor(_Total)\\% Processor Time' -MaxSamples 1");

 

  
public static string Cmd(string fileName, string args)
        {
            string output = string.Empty;

            var info = new ProcessStartInfo();
            info.FileName = fileName;
            info.Arguments = args;
            info.RedirectStandardOutput = true;

            using (var process = Process.Start(info))
            {
                process.WaitForExit();
                output = process.StandardOutput.ReadToEnd();
            }
            return output;
        }
< >
分享
最佳答案
0

你把IIS site对应的APP Pool使用权限较高的LocalSystem启动试试

多半是因为PowerShell没权限返回了错误,而错误会定向到错误流中去了。

 

 

 

收获园豆:10
talentzemin | 小虾三级 |园豆:775 | 2022-06-07 22:24

想默认 权限下进行操作,改这个是可以的,不改的话,cmd bat 没有一个执行成功的,不改前都是报以下错误

Get-Counter : 无法连接到指定的计算机或该计算机已处于脱机状态。
所在位置 行:1 字符: 1
+ Get-Counter -Counter '\Processor(_Total)\% Processor Time' -MaxSample ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Get-Counter],Exception
+ FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand

apgk | 园豆:47 (初学一级) | 2022-06-08 09:14

@apgk: 这是正常的,许多PowerShell操作都需要Run as Administrator,毕竟许多操作会对操作系统进行“修改”从而造成潜在的“危害”。

所以,一定要以管理员权限打开,没有其他办法。

talentzemin | 园豆:775 (小虾三级) | 2022-06-08 09:23

@luzemin: 好,谢谢了,顺便问下,有啥办法获取 cpu利用率,net core 环境下。

apgk | 园豆:47 (初学一级) | 2022-06-08 09:24

@apgk: https://github.com/jackowild/CpuUsagePercentageDotNetCoreExample/blob/master/CpuUsagePercentageDotNetCoreExample/CpuUsagePercentageDotNetCoreExample/Program.cs

talentzemin | 园豆:775 (小虾三级) | 2022-06-08 09:31

@luzemin: 这是当前程序的,而不是当前计算机的

apgk | 园豆:47 (初学一级) | 2022-06-08 09:32

@apgk: https://stackoverflow.com/questions/278071/how-to-get-the-cpu-usage-in-c

总之直接使用PerformanceCounter就可以

talentzemin | 园豆:775 (小虾三级) | 2022-06-08 09:34

@luzemin: net core 没有这个哈

apgk | 园豆:47 (初学一级) | 2022-06-08 09:35

@apgk: 那最简单的办法就是你上面的代码了

talentzemin | 园豆:775 (小虾三级) | 2022-06-08 09:40

@luzemin: 感谢回答

apgk | 园豆:47 (初学一级) | 2022-06-08 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册