希望从C+;内部运行PowerShell代码+;程序 我希望能够从我的C++程序中运行30行PosiScript脚本。我听说这是个糟糕的主意,我不在乎。我还是想知道怎么做 我只想直接在C++程序中编码,我不想在外部调用PosiScript脚本。有没有办法做到这一点?如果不可能,就说不

希望从C+;内部运行PowerShell代码+;程序 我希望能够从我的C++程序中运行30行PosiScript脚本。我听说这是个糟糕的主意,我不在乎。我还是想知道怎么做 我只想直接在C++程序中编码,我不想在外部调用PosiScript脚本。有没有办法做到这一点?如果不可能,就说不,c++,powershell,C++,Powershell,比如说 void runPScode() { //command to tell compiler the following is PowerShell code //a bunch of PowerShell code } 谢谢 我已经找到了执行此操作的命令,并阅读了几个“类似”的问题。您有两个选择:使用系统或CreateProcess。系统文档位于: 使用此方法可以传递字符串命令。例如,如文档所示: system( "type crt_system.txt" ); CreateP

比如说

void runPScode() {

//command to tell compiler the following is PowerShell code
//a bunch of PowerShell code

}
谢谢


我已经找到了执行此操作的命令,并阅读了几个“类似”的问题。

您有两个选择:使用系统或
CreateProcess
。系统文档位于:

使用此方法可以传递字符串命令。例如,如文档所示:

system( "type crt_system.txt" );
CreateProcess文档位于:

使用这个命令有点棘手,我不建议将它用于简单的命令

有关更多信息,请参阅:

不!没有这样的命令告诉编译器

正在内联执行


您可以使用选择shell的函数来实现这一点,并为其提供适当的代码来执行。

为了完整起见:


PowerShell有一个API-请参阅。API是受管理的(即基于网络的)。可以构建混合模式C++应用程序,并从托管部分调用API。

将下列内容放入单独的C++文件:

#include "stdafx.h"
#include <vcclr.h>
#using <mscorlib.dll>
#using <System.dll>
#using <System.Management.Automation.dll>

using namespace System;
using namespace System::Management::Automation;

void RunPowerShell(LPCWSTR s)
{
    PowerShell::Create()->AddScript(gcnew String(s))->Invoke();
}
#包括“stdafx.h”
#包括
#使用
#使用
#使用
使用名称空间系统;
使用名称空间System::Management::Automation;
无效运行PowerShell(LPCWSTR s)
{
PowerShell::Create()->AddScript(gcnew字符串))->Invoke();
}
在项目属性中的VC++目录下,将
C:\Program Files(x86)\Reference Assembly\Microsoft\WindowsPowerShell\3.0
添加到引用目录中(您的路径可能会有所不同)

仅为该文件设置以下编译器选项

  • 公共语言运行时支持(/clr)
  • 调试信息格式-程序数据库(/Zi)
  • 启用C++异常-NO/LI>
  • 基本运行时检查-默认值
  • 预编译头-不使用预编译头
<>你需要从C++调用.NET,但是>CLR与其他C++选项不兼容。如果您遗漏了某些内容,编译器错误消息会让您知道

void RunPowerShell(LPCWSTR)
声明为项目非托管部分中的常规外部函数,根据需要调用



也就是说,无论您的Powershell做什么,C++/Win32可能也可以做

欢迎使用堆栈溢出!请在回答中提供具体方法和解释,并链接到网站作为参考,而不仅仅是链接到外部资源。这应该是评论,而不是回答。如果这是重复的问题,因此,和/或留下评论,一旦你足够。如果不是,请针对这个特定问题定制答案。这些答案是针对命令提示符的,我使用的是powershell,命令是否相同?他有两个以上的选项。还有。exec系列可以用于命令提示符吗?我以为它是专门用于bash commandsNo。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。在线-否,在线-是。PowerShell脚本引擎是完全可编程的。
//a bunch of PowerShell code ...
#include "stdafx.h"
#include <vcclr.h>
#using <mscorlib.dll>
#using <System.dll>
#using <System.Management.Automation.dll>

using namespace System;
using namespace System::Management::Automation;

void RunPowerShell(LPCWSTR s)
{
    PowerShell::Create()->AddScript(gcnew String(s))->Invoke();
}