我有一个脚本可以在每次运行另一个应用程序时自动发送电子邮件。我使用该应用程序输出中的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++
}
任何帮助将不胜感激......
答案 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]