这就是我所拥有的,没有命令启动powershell.exe并在它之后直接关闭。 为什么它不起作用?
int main(int argc, char *argv[])
{
[...]
CreateProcess( NULL, // No module name (use command line)
"powershell.exe -command \".C:\\test\\t.ps1\" ",
[...]
&si, // Pointer to STARTUPINFO structure
&pi ); // Pointer to PROCESS_INFORMATION structure
return 0;
}
在普通的cmd中,命令看起来像这样:
powershell -command ".c:\test\t.ps1"
并且在文件中这个单行,如果你想测试它:
write-host "hello world" |out-file C:\test\hi.txt
应该在控制台中编写hello world并在文件夹
中创建hi.txt答案 0 :(得分:1)
命令行应该是:
CreateProcess(NULL, // No module name (use command line)
"powershell.exe -command \"& {C:\\test\\t.ps1}\"",
或
CreateProcess(NULL, // No module name (use command line)
"powershell.exe -file C:\\test\\t.ps1",
通常,对于执行脚本,请使用-File,除非退出代码对您很重要。如果是,请使用-Command
,因为-File存在错误,即使出现错误,它也始终返回0(成功)。
如果要执行powershell.exe以提示提升,请改用ShellExecute API。为"RunAs"
传递lpOperation
,您可以使用nShowCmd
参数指定隐藏窗口。