在没有用户名和密码的情况下在 C# 中执行 Powershell 脚本 [英] Execute Powershell script in C# without UserName and Password

查看:65
本文介绍了在没有用户名和密码的情况下在 C# 中执行 Powershell 脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在不使用用户名和密码的情况下在 C# 中执行 Powershell 脚本?

How I will execute the Powershell script in C# without use of UserName and Password?

Powershell 脚本:

Powershell Script:

#Script:This Script generate the Package (Zip file) dynamically for unittest 
#DirectoryName is Out Directory of Unittest execution
#location  is Out\Resource Directory
#locationdetail is Array of files Directory for generate the Package
#FileName is name of Package generated through this script
#option is use for switch case implementation,currently not implemented 

 param(   
        [string]$DirectoryName="."
    ,   [string]$location=""
    ,   [string]$FileName="Test.zip"
    ,   [int] $option
)

 [System.Reflection.Assembly]::LoadFrom($DirectoryName+"\\"+"Ionic.Zip.dll");
  $locationdetail =  "Package\\Resource", "Package\\ResourceBad", "Package\\ResourceEmptymetada","Package\\ResourceEmptydatafile","Package\\EmptyTest"
  $directoryToZip=""

  foreach ($element in $locationdetail) 
  {
    If($element -eq "Package\\Resource")
    {
        $directoryToZip= $location+"\\"+"Package\\Resource"
        $FileName ="Package (Good Data).zip"        
    }
    If($element -eq "Package\\ResourceBad")
    {
        $directoryToZip= $location+"\\"+"Package\\ResourceBad"
        $FileName ="Package (Bad Data).zip"     
    }
    If($element -eq "Package\\ResourceEmptymetada")
    {
        $directoryToZip= $location+"\\"+"Package\\ResourceEmptymetada"
        $FileName ="Package (Bad with ManifestEmpty).zip"               
    }
    If($element -eq "Package\\ResourceEmptydatafile")
    {
        $directoryToZip= $location+"\\"+"Package\\ResourceEmptydatafile"
        $FileName ="Package (Bad with Datafile Empty).zip"      
    }
    If($element -eq "Package\\EmptyTest")
    {
        $directoryToZip= $location+"\\"+"Package\\EmptyTest"
        $FileName ="EmptyTest.zip"      
    }
    $zipfile =  new-object Ionic.Zip.ZipFile
    $e= $zipfile.AddDirectory($directoryToZip)
    $zipfile.Save( $location+"\\"+$FileName)
    $zipfile.Dispose()
    $directoryToZip=""
  }

和我的 C# 代码

private static void StartPowerShell(string args,string TempScript)
    {

        string powerShellPath ="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";
        string commandLine = @" -Sta -Command ""& {{ try {{ {0} }} catch {{throw}} }} """.InvariantCultureFormat(args);

        var info = new ProcessStartInfo();
        info.FileName = powerShellPath;
        info.Arguments = commandLine;
        info.WorkingDirectory = Environment.CurrentDirectory;
        info.UseShellExecute = false;
        info.CreateNoWindow = false;
        info.RedirectStandardError = true;
        info.RedirectStandardOutput = true;

        //Pass the Username and Password here in  ProcessStartInfo
        info.UserName = "Saroop";
        string pw = "saroop";
        System.Security.SecureString password = new System.Security.SecureString();
        foreach (var item in pw)
        {
            password.AppendChar(item);
        }
        info.Password = password;
        info.RedirectStandardError = true;
        info.RedirectStandardOutput = true;
        Process p = new Process();
        p.StartInfo = info;
        bool flag = p.Start();
        string error = p.StandardError.ReadToEnd();

        p.WaitForExit();
    }

请指导我任何人.我尝试使用 runas 命令以用户(管理员)身份启动我的 Powershell.exe,但它也要求输入用户名和密码.我尝试 System.Management.Automation.dll 但它不再存在于 .Net4.0 中参考链接:http://msdn.microsoft.com/en-us/library/system.management.automation(v=vs.85).aspx

Please guide me anyone. I try to use runas command to start my Powershell.exe as a User(Administrator) but it's also ask for Username and Password. I try for System.Management.Automation. dll but it's no more existed in .Net4.0 Reference link : http://msdn.microsoft.com/en-us/library/system.management.automation(v=vs.85).aspx

请帮帮我.

推荐答案

我找到了问题的答案.执行 POWERshell 脚本必须执行策略命令系统32C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe如果您的系统是 64 位,那么也对 64 位 POWERSHELL.EXE 执行相同的策略.C:\Windows\SysWOW64\WindowsPowerShell\v1.0\POWERSHELL.EXE

I found the answer of my query . FOR EXECUTE THE POWERSHELL SCRIPT MUST EXECUTE THE POLICY COMMAND FOR SYSTEM32 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe AND IF YOUR SYSTEM IS 64BIT THEN ALSO EXECUTE SAME POLICY FOR 64BIT POWERSHELL.EXE TOO. C:\Windows\SysWOW64\WindowsPowerShell\v1.0\POWERSHELL.EXE

    /// COMMAND : `Set-ExecutionPolicy Unrestricted`

这篇关于在没有用户名和密码的情况下在 C# 中执行 Powershell 脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆