如何从C代码调用powershell脚本

时间:2017-04-28 10:43:01

标签: c++ c powershell directory directory-listing

在我的情况下,我需要从ac或c ++代码源调用powershell脚本,发现很少的链接非常笨拙而且不适合c ++,我只是想要一个路线图,如果它可能调用一个列出目录内容的powershell脚本来自用c或c ++编写的代码片段

4 个答案:

答案 0 :(得分:2)

C ++代码:

#include<iostream>
#include <io.h>   // For access().
#include <sys/types.h>  // For stat().
#include <sys/stat.h>   // For stat().
#include <string>
using namespace std;


void main()
{
       string strPath = "d:\\callPowerShell.ps1";
//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)
       {

              system("start powershell.exe Set-ExecutionPolicy RemoteSigned \n");
              system("start powershell.exe d:\\callPowerShell.ps1");
              system("cls");
       }
       else
       {
              system("cls");
              cout << "File is not exist";
              system("pause");
       }
}

答案 1 :(得分:2)

第一个错误:

#include <io.h>   // For access().

访问权在此库中:

#include <cstdlib>

下一步:

  

错误:未在此范围内声明'system'

#include <unistd.h>

最后:

caractere '\'是C / C ++的一个特殊问题,然后您必须添加另一个'\',如:

system("start powershell.exe C:\\users\\sqtk-mal\\script1.ps1");

答案 2 :(得分:0)

在C ++中

#include <cstdlib>

std::system("command");

在c

#include <stdlib.h>

system("command");

答案 3 :(得分:0)

 #include<iostream>
 #include <io.h>   // For access().
 #include <sys/types.h>  // For stat().
 #include <sys/stat.h>   // For stat().
 #include <string>
 using namespace std;


 int main()
 {
   string strPath = "C:\users\sqtk-mal\script1.ps1";
   //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)
   {

          system("start powershell.exe Set-ExecutionPolicy RemoteSigned \n");
          system("start powershell.exe C:\users\sqtk-mal\script1.ps1");
          system("cls");
   }
   else
   {
          system("cls");
          cout << "File is not exist";
          system("pause");
   }
}

使用此代码时,代码块会出错

    -------------- Build: Debug in may3_1 (compiler: GNU GCC Compiler)---------------

    mingw32-g++.exe -Wall -fexceptions -g  -c C:\Users\sqtk-mal\Documents\codeblocks\may3_1\main.cpp -o obj\Debug\main.o
    C:\Users\\Documents\codeblocks\may3_1\main.cpp: In function 'int main()':
    C:\Users\\Documents\codeblocks\may3_1\main.cpp:11:25: error: incomplete universal character name \u
    string strPath = "C:\users\sqtk-mal\script1.ps1";
                     ^
    C:\Users\\Documents\codeblocks\may3_1\main.cpp:11:25: warning: unknown escape sequence: '\s'
    C:\Users\\Documents\codeblocks\may3_1\main.cpp:11:25: warning: unknown escape sequence: '\s'
    C:\Users\\Documents\codeblocks\may3_1\main.cpp:18:80: error: 'system' was not declared in this scope
           system("start powershell.exe Set-ExecutionPolicy RemoteSigned \n");
                                                                            ^
     C:\Users\\Documents\codeblocks\may3_1\main.cpp:19:22: error: incomplete universal character name \u
           system("start powershell.exe C:\users\sqtk-mal\script1.ps1");
                  ^
     C:\Users\\Documents\codeblocks\may3_1\main.cpp:19:22: warning: unknown escape sequence: '\s'
     C:\Users\\Documents\codeblocks\may3_1\main.cpp:19:22: warning: unknown escape sequence: '\s'
     C:\Users\\Documents\codeblocks\may3_1\main.cpp:24:27: error: 'system' was not declared in this scope
           system("cls");
                       ^
     Process terminated with status 1 (0 minute(s), 0 second(s))

4个错误,4个警告(0分钟,0秒(秒))