【发布时间】:2013-11-25 06:00:14
【问题描述】:
使用 Powershell 对象并运行 foreach 循环来获取结果,
我得到了 2 个正确的 IP 地址结果 144.68.205.19 和 144.68.205.22,但它打印在 1 行中,
144.68.205.19144.68.205.22
应该是这样拆分新行的,
144.68.205.19
144.68.205.22
请指教,这里是C#代码,
// Powershell
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
Command invokeScript = new Command("Invoke-Command");
RunspaceInvoke invoke = new RunspaceInvoke();
// invoke-command -computername compName -scriptblock { get-process }
ScriptBlock sb = invoke.Invoke("{"+ PowerShellCodeBox.Text +"}")[0].BaseObject as ScriptBlock;
invokeScript.Parameters.Add("scriptBlock", sb);
invokeScript.Parameters.Add("computername", TextBoxServer.Text);
string str = "";
pipeline.Commands.Add(invokeScript);
Collection<PSObject> output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
str = str + psObject;
}
if (str == ""){
str = "Error";
ResultBox.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF0000");
}
ResultBox.Text = str;
【问题讨论】:
-
P.s.w.g 是正确的。有了这些数据,您将不知道第一个 IP 的结束位置和第二个 IP 的开始位置。
-
如果您确定总会有一个
144,请在144处拆分字符串并在结果字符串前加上它。 -
不,
str = str + psObject;不会拆分为换行符,您可以附加它们。使用数组或列表来存储它们,或者如果您仍然希望仅将其作为一个字符串,则附加一个换行符。 -
它是
144.68.205.19和144.68.205.22。他们只是把它放在一条线上。我只想换行而不是放在一起。 -
psObject 是整个 IP 地址吗?如果是这样,只需添加 \r\n: str = str + psObject +"\r\n";
标签: c# asp.net powershell