在内存中打开带有凭据的PowerShell

时间:2017-02-16 07:12:57

标签: c# powershell

我想从这样的C#代码中打开powershell。但是,我想在PowerShell出现时设置凭证。

Process myProcess = new Process();

try
{
    myProcess.StartInfo.UseShellExecute = true;
    myProcess.StartInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";
    myProcess.StartInfo.CreateNoWindow = false;
    myProcess.Start();

}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

基本上在powershell运行后我想做一个Enter-PSSession连接到远程计算机,但我不想在那里提示输入用户名和密码。

我知道这可以做到。

PS C:\> $C = Get-Credential
PS C:\> Enter-PsSession -ComputerName "Server01" -Credential $C

我不想要求用户提供凭据,而是在调用powershell时我想在变量中设置它。我怎样才能做到这一点?

当前的方法是双重的,

通过C#转储密码

string cmd = "\"" + mypwd+ "\"" + @" | ConvertTo-SecureString -AsPlainText -Force | convertfrom-securestring | out-file output";
PowerShellInstance.AddScript(cmd);
Collection<PSObject> PSOutput = PowerShellInstance.Invoke();

在powershell中阅读

$pwd = Get-Content .\output | ConvertTo-SecureString
$localcred = New-Object -typename System.Management.Automation.PSCredential -argumentlist "myusername",$pwd

Enter-PSSession -ComputerName 192.168.2.51 -Credential $localcred

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:0)