2014-04-05 121 views
0

PowerShell使用多个文本文件的主题非常少,只发现了一些需要使用一个列表并在主列表中运行的列表。无论如何...PowerShell:使用Get-Content从多个文本文件发送消息

我的问题来自需要结合两组数据,相等的行数。 Server.txt & SessionID.txt。这两个文件都是从另一个Get-XASession查询创建的。 我想在Send-XAMessage中组合这些。

Servers.txt = "Server1","Server2","Server3",etc.

SessionIds.txt = "2","41","18",etc.

下面是我尝试过失败的代码... 顺便说一句,“ServerX”,是XA远程计算所需静态连接的服务器。

$Server = Get-Content .\Server.txt

$SessionIds = Get-Content .\SessionIds.txt

ForEach ($s in $Servers -And $i in $SessionIds) { Send-XASession -ComputerName ServerX -ServerName $s -SessionId $i -MessageTitle "MsgTitle" -MessageBody "MsgBody" }

对于正常的可用性,我们可以使用Get-Service切换Stop-XASession,并使用$ s作为-ComputerName。 并为-ServiceName切换SessionId。

这将是这个样子......

ForEach ($s in $Servers -And $i in $Sevices) { Get-Service -ComputerName $s -Name $i } | FT Name,Status

  • 唯一重要的事情,就是在两个文本文件的每一行是通过同时运行。 没有重复。将Servers.txt中的第1行与SessionIds.txt中的第1行相匹配,并在每个命令中使用它。 任何帮助将不胜感激。

回答

0

你可以做这样的事情:

$Server = Get-Content .\Server.txt 

$SessionIds = Get-Content .\SessionIds.txt 

$i=0 

ForEach ($s in $Servers) 

{ 
    Send-XASession -ComputerName ServerX -ServerName $s -SessionId $SessionIds[$i++] -MessageTitle "MsgTitle" -MessageBody "MsgBody" 
} 

这将循环在同步的$ SessionIds元素与$服务器元素。 $ SessionIds [$ i ++]上的postincrement运算符将在每次经过循环时增加$ i。

+0

巧妙的想法索引文本文件,但现在我得到一个错误... 错误: 无法索引到一个空数组。 – user3499962

+0

我甚至试图设置“_ $我= 1_”,仍然没有去,相同的错误味精。 – user3499962

+0

好的,所以我仍然在学习...... MessageBody上缺少结尾的'''圆括号。 这个解决方案工作的非常好,谢谢。 – user3499962

相关问题