Arrays 循环正在复制输出
下面的代码用于检查两个硬编码的服务名称(它们永远不会更改),如果未找到它们,则说明服务不存在。它会这样做,但它会输出两行,因为有两个服务需要检查 有没有办法改变这一点,以便在检查两个服务之后只给出一个输出Arrays 循环正在复制输出,arrays,loops,powershell,foreach,Arrays,Loops,Powershell,Foreach,下面的代码用于检查两个硬编码的服务名称(它们永远不会更改),如果未找到它们,则说明服务不存在。它会这样做,但它会输出两行,因为有两个服务需要检查 有没有办法改变这一点,以便在检查两个服务之后只给出一个输出 $servicenames=(“服务1”、“服务2”) 写入主机“检查服务” 功能服务验证{ foreach($sn in$servicenames){ if((获取服务“$servicenames*”-包括$servicenames)-eq$null){ 写下主持人“年轻的绝地武士,你错了,
$servicenames=(“服务1”、“服务2”)
写入主机“检查服务”
功能服务验证{
foreach($sn in$servicenames){
if((获取服务“$servicenames*”-包括$servicenames)-eq$null){
写下主持人“年轻的绝地武士,你错了,这个服务器不是收集器!”
}否则{
写入主机“$servicenamespresent”
}
}
}
接受服务列表,因此您可以简单地执行以下操作,而无需循环。不过,如果要将检查封装到函数中,我建议将服务作为参数传递
功能服务验证($svc){
if(获取服务$svc-ErrorAction SilentlyContinue){
写下主持人“年轻的绝地武士,你错了,这个服务器不是收集器!”
}否则{
写入主机“$svc present”
}
}
servicevalidation$servicenames
-ErrorAction SilentlyContinue
在服务不存在的情况下抑制错误输出
如果您想知道到底缺少哪项服务,可以使用Where对象
过滤器:
功能服务验证($svc){
$missing=$svc | Where对象{
-不(获取服务$\错误操作SilentlyContinue)
}
如果($缺失){
写入主机“缺少服务:$missing”
}否则{
写入主机“$svc present”
}
}
您不能将服务名称与包含选项一起使用,请参阅。我确信您希望检查此条件if((获取服务$sn)-eq$null)