【发布时间】: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