我想从这样的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
有更简洁的方法吗?
答案 0 :(得分:0)