从Args获得第一个单词的价值[1]

时间:2014-12-20 00:54:55

标签: powershell

我有一个脚本可以在每次运行另一个应用程序时自动发送电子邮件。我使用该应用程序输出中的2个变量来驱动电子邮件主题的一部分。我的问题是第二个变量不是单个项目而是段落。我只需要第一个单词就可以将其传递给电子邮件主题。看起来像这样。

原始应用执行以下命令:

powershell.exe -ExecutionPolicy Unrestricted -File "alert_mail_test1.ps1" $ENTRY$ $TEXT$

$ ENTRY $的值是一个数字

  

1234567

$ TEXT $的值是段落

  

From_South:这是你的新条目。这个段落的长度可能会有所变化,但第一个词是告诉我它是什么以及我必须发送它的位置。

当然,如果我在我的剧本中

$location = args[1]

我得到整个段落。然后我尝试使用循环在部分中打破它,但循环没有看到单个单词,它总是给我整个段落

$i=0
foreach ($word in $args)  {
       if ($i -eq 1) {
       $location = $word
       }
$i++
}

任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:2)

看起来你正试图让“From_South”归来。使用$args[1]

中的以下文本示例
  

From_South:这是你的新条目。本段可能会改变   长度,但第一个字是什么告诉我它是什么和我在哪里   必须发送它。

我可能会使用正则表达式,因为你只是在寻找前两个单词边界之间的文本

$location = $args[1] -replace "\b(.+?)\b.*",'$1'
在这种情况下,

$location将是“From_South”。

您也可以执行拆分返回2个元素。

$location = $args[1].Split(" :",2))[0]

这会分裂在冒号或空格上。两人说只需要返回两个元素。第一个是“From_South”

答案 1 :(得分:2)

$location = $args[1].split(':')[0]