让PowerShell脚本使用C#代码,然后将参数传递给Main方法



我发现了一篇technet博客文章,上面说PowerShell可以使用C#代码。文章:在Powershell脚本中使用CSharp(C#)代码

我找到了让C#代码在PowerShell中工作所需的格式,但如果它没有向Main方法传递参数([namespace.class]::Main(foo)),脚本就会抛出错误。

有没有一种方法可以将字符串"on"或"off"传递给main方法,然后根据传递的字符串运行if语句?如果可能的话,你能提供例子和/或链接吗?

以下是我目前尝试构建代码的方式。

$Assem = @( //assemblies go here)
$source = @"
using ...;
namespace AlertsOnOff
{
    public class onOff
    {
        public static void Main(string[] args )
        {
             if(args == on)
              {//post foo }
             if(arge == off)
              { //post bar }
        }
"@
Add-Type -TypeDefinition $Source -ReferencedAssumblies $Assem
[AlertsOnOff.onOff]::Main(off)
#PowerShell script code goes here.
[AlertsOnOff.onOff]::Main(on)

首先,如果要编译并运行C#代码,则需要编写有效的C#代码。在PowerShell方面,如果从PowerShell调用Main,则需要向其传递一个参数。PowerShell会自动为您在数组中放入一个参数,但如果您没有参数,它不会插入。也就是说,目前还不清楚为什么这是一个主要的方法。它不是可执行文件。它很可能只有两个静态方法,TurnOnTurnOff。下面的代码编译并运行,根据需要进行修改:

$source = @"
using System;
namespace AlertsOnOff
{
    public class onOff
    {
        public static void Main(string[] args)
        {
             if(args[0] == `"on`")
             {
                  Console.WriteLine(`"foo`");
             }
             if(args[0] == `"off`")
             { 
                  Console.WriteLine(`"bar`");
             }
        }
    }
}
"@
Add-Type -TypeDefinition $Source
[AlertsOnOff.onOff]::Main("off")
# Other code here
[AlertsOnOff.onOff]::Main("on")

相关内容

  • 没有找到相关文章

最新更新