PowerShell中对象数组内部的字符串数组

jjhzyzn0  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(153)

我正在尝试通过PowerShell从C#DLL调用函数。它需要一个对象数组作为参数,我需要在其中传递字符串,但我不知道如何传递。
我需要做的是:
C#版本:

printCustom(new object[] {new string[] {"hello", "its", "working"}});

我需要从PowerShell调用此函数,但如何传递参数呢?

printCustom([object[]]@(//now?//));
daupos2t

daupos2t1#

使用一元数组运算符,将可枚举类型 Package 在数组中-这将防止PowerShell在构造将实际传递给方法的数组时解开字符串数组:

[TargetType]::printCustom(@(,'hello its working'.Split()))

让我们来测试一下:


# Generate test function that takes an array and expects it to contain string arrays

Add-Type @'
using System;

public class TestPrintCustom
{
  public static void printCustom(object[] args)
  {
    foreach(var arg in args){
      foreach(string s in (string[])arg){
        Console.WriteLine(s);
      }
    }
  }
}
'@

[TestPrintCustom]::printCustom(@(,"hello its working".Split()))

不出所料,它打印了:

hello
its
working

相关问题