How to call a powershell script from a C code

倾然丶 夕夏残阳落幕 提交于 2020-01-23 03:35:23

问题


In my case, I needed to call a powershell script from a c or c++ code source, found few links which were pretty clumsy and not good with c++, I simply want a roadmap if its possible invoking a powershell script which lists directory contents from a code snippet written in c or c++


回答1:


C++ code :

#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");
       }
}



回答2:


First error :

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

access is in this lib:

#include <cstdlib>

Next :

error: 'system' was not declared in this scope

#include <unistd.h>

And finally :

The caractere '\' is a special caractere for C/C++ then you have to add another '\' like :

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



回答3:


In C++

#include <cstdlib>

std::system("command");

In c

#include <stdlib.h>

system("command");



回答4:


 #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");
   }
}

On using this code, codeblocks gives an error

    -------------- 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 error(s), 4 warning(s) (0 minute(s), 0 second(s))



来源:https://stackoverflow.com/questions/43678273/how-to-call-a-powershell-script-from-a-c-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!