2017-02-16 98 views
0

我想從這樣的C#代碼打開PowerShell。但是,我想設置一個憑證到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是運行我想要做一個輸入-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

機管局據我所知,您可以使用PowerShell中ICredential對象(我做這一切對於SharePoint的時間)一個PSCredential對象。使用NetworkCredential對象也應該有效。但是,硬編碼憑據是不好的做法。 – bluuf

回答