希望从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)
- 基本运行时检查-默认值
- 预编译头-不使用预编译头
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();
}