2012-12-07 28 views
6

Tôi có một Object PSCredential trong C# và muốn vượt qua nó như tham số này PowerShell Scriptthế nào để Pass đối tượng PSCredential từ mã C# để Powershell Chức năng

Đây là Object PSCredential

PSCredential Credential = new PSCredential ("bla" , blasecurestring) 

Đây là Script tôi muốn chạy trong C#

powershell.AddScript("$s = New-PSSession -ComputerName '" + serverName + "' -Credential " + Credential); 

tôi không thể hiểu được những giải pháp mà được cung cấp ở đây Pass a Parameter object (PSCredential) inside a ScriptBlock programmatically in C#

EDIT: điều này đang làm việc

powershell.AddCommand("New-PSSession").AddParameter("ComputerName", serverName).AddParameter("Credential", Credential); 

Nhưng làm thế nào tôi có thể tiết kiệm Info Session trong một biến? Tôi cần chúng cho các lệnh sau:

powershell.AddScript(@"Invoke-Command -Session $s -ScriptBlock {" + cmdlet + "}"); 
+0

Có lẽ chúng ta có thể đi mà không có đường ống –

Trả lời

8

Tôi đã tìm được giải pháp ngay bây giờ. Thật dễ dàng khi bạn biết những gì bạn làm ...

powershell.AddCommand("Set-Variable"); 
powershell.AddParameter("Name", "cred"); 
powershell.AddParameter("Value", Credential); 

powershell.AddScript(@"$s = New-PSSession -ComputerName '" + serverName + "' -Credential $cred"); 
powershell.AddScript(@"$a = Invoke-Command -Session $s -ScriptBlock {" + cmdlet + "}"); 
powershell.AddScript(@"Remove-PSSession -Session $s"); 
powershell.AddScript(@"echo $a"); 

đâu Credential là C# PSCredential đối tượng

+0

Tại sao bạn không sử dụng C# thay vì thêm tất cả các script? Bạn không cần tự tạo phiên. Hãy xem RunspaceFactory.CreateRunspace và PowerShell.Runspace. – Rookian

+1

Xin chào, bạn có thể cho tôi biết 'powershell' là gì không? Đó có phải là đối tượng RunSpace không? – Bassie

+0

Sự khác nhau giữa ps.AddParameter và ps.AddArgument là gì? – user3752281

Các vấn đề liên quan