如何将数组从C#传递到PowerShell,可以foreach
编辑?
现在我有这个脚本:
[Cmdlet(VerbsCommon.Get, "Numbers")]
public class GetNumbersCmdlet: Cmdlet
{
protected override void BeginProcessing()
{
var list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
list.Add("4");
list.Add("5");
WriteObject(results.ToArray());
}
}
这个PowerShell脚本:
foreach ($number in Get-Numbers) {
Write-Output "Output is $number"
}
而不是:
Output is 1
Output is 2
Output is 3
Output is 4
Output is 5
我会得到:
Output is 1 2 3 4 5
答案 0 :(得分:1)
PowerShell不会自动枚举命令输出。这意味着如果命令将集合写入管道,那么该集合将作为单个对象传递给下一个命令。
除非明确询问,否则 [Cmdlet(VerbsCommon.Get, "Numbers")]
public class GetNumbersCmdlet: Cmdlet
{
protected override void BeginProcessing()
{
WriteObject("1");
WriteObject("2");
WriteObject("3");
WriteObject("4");
WriteObject("5");
}
}
也不会枚举对象。
因此,要解决您的问题,您可以随时编写对象而不是收集它们:
WriteObject
或者您可以要求[Cmdlet(VerbsCommon.Get, "Numbers")]
public class GetNumbersCmdlet: Cmdlet
{
protected override void BeginProcessing()
{
var list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
list.Add("4");
list.Add("5");
WriteObject(results, true);
}
}
枚举您的收藏品:
create table MOCK_DATA (
id INT,
employeeID VARCHAR(50),
first_name VARCHAR(50),
last_name VARCHAR(50),
phone VARCHAR(50),
email VARCHAR(50),
gender VARCHAR(50),
country VARCHAR(50),
city VARCHAR(50),
salary VARCHAR(50);
insert into MOCK_DATA (id, employeeID, first_name, last_name, phone, email, gender, country, city, salary)
values
(1, '61-8930771', 'Piotr', 'Haglinton', '1(564)296-4462', 'phaglinton0@cbslocal.com', 'Male', 'Canada', 'Waterloo', '$6862.20');
请注意,在这两种情况下,您不再编写数组,而是编写它的各个项目。