2012-12-07 11 views
6

सी # कोड से PSCredential वस्तु पास करने के लिए मैं कैसे सी # में एक PSCredential वस्तु है और इस PowerShell स्क्रिप्टPowershell समारोह

के लिए पैरामीटर के रूप में इसे पारित करना चाहते हैं यह PSCredential वस्तु

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

यह है स्क्रिप्ट मैं सी # में समाधान है जो यहाँ की पेशकश की है Pass a Parameter object (PSCredential) inside a ScriptBlock programmatically in C#

चलाने के लिए

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

मैं नहीं समझ सकता है चाहता हूँ

संपादित करें: इस बात

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

काम कर रहा है लेकिन यह कैसे मैं एक चर में सत्र जानकारी बचा सकता है? मुझे निम्नलिखित आदेशों के लिए उनकी आवश्यकता है:

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

आपत्ति शायद यह पाइपलाइनों –

उत्तर

8

मुझे अब समाधान मिला। यह बहुत आसान है जब आप जानते हैं कि आप क्या करते ...

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"); 

कहाँ क्रेडेंशियल सी # PSCredential

+0

क्यों आप के बजाय जोड़ने की सी # का उपयोग नहीं करते के बिना जाने के लिए संभव है है सब स्क्रिप्ट? आपको अपने आप से सत्र बनाने की आवश्यकता नहीं है। RunspaceFactory.CreateRunspace और PowerShell.Runspace पर एक नज़र डालें। – Rookian

+1

हाय डीजी, क्या आप कृपया मुझे बता सकते हैं कि 'पावरहेल' क्या है? क्या वह एक रनस्पेस ऑब्जेक्ट है? – Bassie

+0

ps.AddParameter और ps.AddArgument के बीच क्या अंतर है? – user3752281