使用c#中的参数运行powershell并在文本文件中写入这些参数

时间:2016-04-15 16:38:21

标签: c# powershell

我正在尝试在c#中运行powershell脚本 这是第一个测试脚本

CKQueryOperation

这是我的C#应该运行powershellscript

param(
[string] $computer,
[string] $password
)


out-file -filepath C:\File\parameter.txt -inputobject $computer -encoding ASCII -width 50 -Append
out-file -filepath C:\File\params.txt -inputobject $password -encoding ASCII -width 50 -Append
out-file -filepath C:\File\Sys32.txt -inputobject $password -encoding ASCII -width 50 -Append

我的目的是测试是否使用正确的参数运行cmdlet 我有一个Windows窗体应用程序,允许用户选择参数 我想把我的参数值写在文本文件(.txt)中 相反,我得到了这个

     private void testRunningPowershell()
    {
        string mypass = gettingPass();

        using (Runspace runspace = RunspaceFactory.CreateRunspace())
        {
            runspace.Open();
            runspace.SessionStateProxy.Path.SetLocation("C:\\Users\\robert\\Desktop\\Titanium\\");

            RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace);
            //runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");

            // create a pipeline and feed it the script text (AddScript method) or use the filePath (Add method)
            using (Pipeline pipeline = runspace.CreatePipeline())
            {

                Command command = new Command(@"C:\Users\robert\Desktop\Titanium\Titanium2.ps1");
                dictionaryParams.Remove("FriendlyName");

                foreach (var item in dictionaryParams)
                {
                    if (item.Key == (string)comboBoxScreen.SelectedItem)
                    {
                        CommandParameter testParam = new CommandParameter(null, item.Value);
                        CommandParameter testParam2 = new CommandParameter(null, mypass);
                        command.Parameters.Add(null, testParam);
                        command.Parameters.Add(null, testParam2);
                    }
                }

                pipeline.Commands.Add(command);
                var results = pipeline.Invoke();

                ReturnInfo ri = new ReturnInfo();
                foreach (PSObject p in results)
                {
                    Hashtable ht = p.ImmediateBaseObject as Hashtable;

                    ri.ReturnText = (string)ht["ComputerName"];
                    ri.ReturnText = (string)ht["password"];
                }





                runspace.Close();
            }
        }
    }

而不是参数值选择

0 个答案:

没有答案