[英]How to create variables using Powershell in C#
嘗試在C#中的powershell中執行以下操作
$certThumbrint = "someLocationToACert"
$cert = get-item $certThumbrint
Get-RoleInstanceCount -ServiceName "someServiceName" -DeploymentSlot "someSlot" -RoleName "someRole" -SubscriptionId "someId" -Certificate $cert
這在PowerShell comandline中逐個運行時非常有效。 但我無法通過代碼弄清楚如何做到這一點。 到目前為止,我已經這樣做了。
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add("$certThumbrint = \"someLocationToACert\"");
pipeline.Commands.Add(@"$cert = get-item $certThumbrint");
Command instanceCount = new Command("Get-RoleInstanceCount");
instanceCount.Parameters.Add(new CommandParameter("ServiceName", "someServiceName"));
....
instanceCount.Parameters.Add(new CommandParameter("Certificate", "$cert"));
然后我得到以下異常:
“術語'$ certThumbrint =”someLocation“'不被識別為cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確然后再試一次。
我試圖將varibles添加為“AddScrips”,我也使用過
SessionStateVariableEntry var2 = new SessionStateVariableEntry("cert", "get-item $certThumbrint", "Initial session state MyVar1 test");
initialSessionState.Variables.Add(var2);
在創建運行空間之前。 什么都行不通。 還將所有代碼添加到字符串中並嘗試將其作為腳本運行。
我實際上無法做到這一點,感覺這是一個非常簡單的事情,必須能做...謝謝。
編輯:還嘗試了以下內容:
const string getInstanceCountScript = "$certThumbrint = \"somecert\" \n " +
"$cert = get-item $certThumbrint \n " +
"Get-RoleInstanceCount -ServiceName someservicename" +
...
" -Certificate $cert";
pipeline.Commands.AddScript(getInstanceCountScript);
它運行但返回一個空字符串。 如果我將相同的代碼放入我用“Add()”調用的ps1文件中,它會運行並為我提供正確的輸出。 但我真的不想在我的項目中加載ps1文件只需3行代碼或更少。
這段代碼非常適合我。 你是否真的,PS1文件包含完全相同的代碼?
static void Main(string[] args)
{
using (Runspace rs = RunspaceFactory.CreateRunspace())
{
rs.Open();
var pipeline = rs.CreatePipeline();
pipeline.Commands.AddScript("$certThumbrint = \"c:\\1.txt\"\n" +
"$cert = get-item $certThumbrint\n" +
"Get-Content $cert");
foreach (var s in pipeline.Invoke())
{
Console.WriteLine(s);
}
}
Console.ReadLine();
}
看一下New-Variable
命令行開關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.