【问题标题】:PowerShell: Use Get-Content from multiple text files to send a messagePowerShell:使用来自多个文本文件的 Get-Content 发送消息
【发布时间】:2014-05-17 12:06:42
【问题描述】:

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

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

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

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

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

$Server = 获取内容.\Server.txt

$SessionIds = 获取内容.\SessionIds.txt

ForEach($Servers 中的 $s -$SessionIds 中的 $i){ 发送-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名称、状态

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

【问题讨论】:

    标签: powershell


    【解决方案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。

    【讨论】:

    • 索引文本文件的巧妙想法,但现在出现错误...错误:无法索引到空数组。
    • 我什至尝试设置“$i=1”,还是不行,同样的错误信息。
    • 好的,所以我还在学习...在 MessageBody 上缺少一个右括号。这个解决方案效果很好,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多