PowerShell:使用多个文本文件中的Get-Content发送消息

时间:2014-04-05 00:54:48

标签: powershell

关于为PowerShell使用多个文本文件的主题很少,只找到了需要一个列表并针对主列表运行它的东西。总之...

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

  

Servers.txt =“Server1”,“Server2”,“Server3”等

     

SessionIds.txt =“2”,“41”,“18”等

这是我试过的代码失败了...... BTW,“ServerX”,是XA远程计算所需的静态连接服务器。

  

$ Server = Get-Content。\ Server.txt

     

$ SessionIds = Get-Content。\ SessionIds.txt

     

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

为了正常使用,我们可以使用Get-Service切换Stop-XASession,并使用$ s for -ComputerName。 并为-ServiceName切换SessionId。

看起来像这样......

  

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

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

1 个答案:

答案 0 :(得分:1)

您可以这样做:

$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元素与$ server元素同步。 $ SessionIds [$ i ++]的postincrement运算符每次循环时都会增加$ i。