【问题标题】:Foreach loop not running through list of entriesForeach 循环未通过条目列表运行
【发布时间】:2019-02-22 15:20:18
【问题描述】:

我已尝试多次搜索此问题,但仍未解决此问题。我在 $mediaagentlist 中有一个服务器列表,foreach 循环应该遍历每个服务器并获取某些服务的状态:

    $mediaagentlist = "cs0400ma01
cs0400ma02"

[string]$Commcell_Input = $args[0] 
$MAChoice = $args[1]

if ($MAChoice -eq $null)
        {
            Write-Output "No media agent was specified, running against all MAs in the Commcell..."

            #Run this loop for each MA which is stored in Mediaagentlist
            foreach ($Mediaagent in $Mediaagentlist)
            {
                Write-Output $Mediaagent
                $GxCLMgrS_State = Invoke-Command -ComputerName $Mediaagent {Get-Service -name "GxClMgrS(Instance001)"}
                $GXMMM_State = Invoke-Command -ComputerName $Mediaagent {Get-Service -name "GXMMM(Instance001)"}
                $GxCVD_State = Invoke-Command -ComputerName $Mediaagent {Get-Service -name "GxCVD(Instance001)"}

                Write-Output "Client manager service state: " $GxCLMgrS_State.Status
                Write-Output "Media manager mount service state: " $GXMMM_State.Status
                Write-Output "Communications service state: " $GxCVD_State.Status

            }


        }

如何纠正这个问题,以便 for each 循环遍历 $mediaagentlist 中的条目列表并运行每个服务器的代码?

提前致谢!

【问题讨论】:

  • 您的 mediaagentlist 变量不是数组。这是一个单一的字符串,所以没有什么可以迭代的。要使用数组,需要逗号:$mediaAgentList = 'cs0400ma01', 'cs0400ma02'
  • 从 $mediaagentlist 中创建一个数组,例如:$mediaagentlist = @("cs0400ma01", "cs0400ma02")
  • 太棒了,成功了!现在说得通了……

标签: powershell loops foreach scripting


【解决方案1】:

您的问题似乎在这里

$mediaagentlist = "cs0400ma01
cs0400ma02"

您似乎缺少每个单词的结束语和逗号

试试

$mediaagentlist = "cs0400ma01", "cs0400ma02"

$mediaagentlist = @("cs0400ma01", "cs0400ma02")

或者您可以定义一个多行字符串,然后在新行上拆分,如果您需要输入为单个多行字符串的原因:

$mediaagentlist = "cs0400ma01
cs0400ma02" -split '[\r\n]+'

【讨论】:

  • -split "`r?`n" **
  • @TheIncorrigible1 你有一些最好的建议
  • 一个知情的社区是一个更好的社区? 我经常遇到行尾可能无法预测的问题。
猜你喜欢
  • 1970-01-01
  • 2012-12-13
  • 2018-04-09
  • 1970-01-01
  • 2015-07-13
  • 2021-03-05
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
相关资源
最近更新 更多