gpt4 book ai didi

c++ - 如何使用 C++ 获取 powershell 命令的输出?

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:20 28 4
gpt4 key购买 nike

我在 powershell 的帮助下实现了网络统计程序 scrpit .该程序运行成功,并为我提供了完美的输出。下面是我的程序。

int main(int argc, char *argv[])
{
string strPath = "C:\\Get-NetworkStatistics.ps1";
char str[50] = "C:\\Get-NetworkStatistics.ps1";

char command[500];

//access function:
//The function returns 0 if the file has the given mode.
//The function returns –1 if the named file does not exist or does not have the given mode
if(access(strPath.c_str(),0) == 0)
{


_snprintf(command, sizeof(command), "Start Powershell.exe -noexit Set -executionpolicy;.'%s';Get-NetworkStatistics",str);
system(command);



}

else
{
system("cls");
cout << "File is not exist";
system("pause");
}
return 0;
}

! here is the output of above program

如您所见,输出在 powershell 窗口中。我想获取 powershell 输出的所有这些数据,并希望在控制台中显示它。怎么可能?

请帮帮我..

最佳答案

除非您需要在信息可用时实时显示信息,否则只需将其重定向到一个文件,然后从 C++ 读取该文件即可。

由于 netstat 在 Windows XP SP 2 或附近被切除,我可以理解使用 Powershell。

可能 netstat 将满足您的需求,这样您就不必处理任何复杂的问题。


顺便说一句,我建议使用脚本语言来编写脚本任务。当然,默认情况下禁用 Powershell 脚本会很复杂,否则会指示使用 Powershell 脚本工具。但是例如在这种情况下,[cmd.exe] 批处理文件比从 C++ 执行它的工作更自然。

可从 JScript 和 VBScript 获得的 Windows 脚本宿主 shell 对象提供了通过输出抓取来执行进程的功能。

有一个小问题,您必须轮询输出,但我认为它仍然比在 C/C++ API 级别执行此操作更容易。

关于c++ - 如何使用 C++ 获取 powershell 命令的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24180653/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com