gpt4 book ai didi

c# - 如何在 C# 中使用 Powershell 创建变量

转载 作者:行者123 更新时间:2023-11-30 18:38:49 25 4
gpt4 key购买 nike

尝试在 C# 中的 powershell 中执行以下操作

$certThumbrint = "someLocationToACert"
$cert = get-item $certThumbrint

Get-RoleInstanceCount -ServiceName "someServiceName" -DeploymentSlot "someSlot" -RoleName "someRole" -SubscriptionId "someId" -Certificate $cert

在 powershell 命令行中一个一个地运行它们时,这非常有效。但是我不知道如何通过代码来做到这一点。到目前为止,我已经做到了。

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

然后我得到以下异常:

"The term '$certThumbrint = "someLocation"' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

我尝试将变量添加为“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 文件中,它会运行并为我提供正确的输出。但我真的不想在我的项目中只为 3 行或更少的代码加载大量 ps1 文件。

最佳答案

这段代码非常适合我。您确定 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();
}

关于c# - 如何在 C# 中使用 Powershell 创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com