PowerShell测试连接,如果使用get service存在服务
基本上我想检查一下文本文件中的计算机是否在线。如果他们不在线,则写主机$computer已关闭。如果$computer处于联机状态,则检查此服务是否存在,如果存在,则写入主机$computer installed,如果不存在,则写入主机$computer not installed。测试连接似乎正常,但如果计算机联机,它们都会返回已安装的write host$computer,即使我有一台我知道没有运行此服务的测试机器PowerShell测试连接,如果使用get service存在服务,powershell,if-statement,Powershell,If Statement,基本上我想检查一下文本文件中的计算机是否在线。如果他们不在线,则写主机$computer已关闭。如果$computer处于联机状态,则检查此服务是否存在,如果存在,则写入主机$computer installed,如果不存在,则写入主机$computer not installed。测试连接似乎正常,但如果计算机联机,它们都会返回已安装的write host$computer,即使我有一台我知道没有运行此服务的测试机器 function Get-RunService { $service
function Get-RunService {
$service = get-service -name ABCService
Get-Content "C:\powershell\computers.txt" |
foreach {if (-not (Test-Connection -comp $_ -quiet))
{
Write-host "$_ is down" -ForegroundColor Red
}
if ($service )
{
write-host "$_ Installed"
}
else {
Write-host "$_ Not Installed"
}
}
}
get-RunService
请看一下您的代码的这个清理版本 函数获取运行服务{ 获取内容C:\powershell\computers.txt| 弗雷奇{ 如果-未测试连接-组件$\u1-安静{ 写入主机$\已关闭-ForegroundColor红色 }否则{ $service=获取服务-name ABCService-ComputerName$\错误操作SilentlyContinue 如果$service{ 已安装写入主机$\u }否则{ 写入主机$\u未安装 } } } } 获取运行服务 我试图弄清楚支架是如何工作的。您检查主机是否处于活动状态时,没有一个Else来将机箱与服务器分开,以确定是否可联系。附带说明的是,ping可能会失败,但主机可能仍然处于活动状态,这一切都取决于您的环境,但请注意这种可能性。还将$service行移动到foreach中,添加了-ComputerName$_
目前,您对此没有错误余地。该函数可能不存在,您应该对此负责。最好的建议是查看Get服务的-ErrorAction,可能还有一个Try/Catch块 看看这个代码的清理版本 函数获取运行服务{ 获取内容C:\powershell\computers.txt| 弗雷奇{ 如果-未测试连接-组件$\u1-安静{ 写入主机$\已关闭-ForegroundColor红色 }否则{ $service=获取服务-name ABCService-ComputerName$\错误操作SilentlyContinue 如果$service{ 已安装写入主机$\u }否则{ 写入主机$\u未安装 } } } } 获取运行服务 我试图弄清楚支架是如何工作的。您检查主机是否处于活动状态时,没有一个Else来将机箱与服务器分开,以确定是否可联系。附带说明的是,ping可能会失败,但主机可能仍然处于活动状态,这一切都取决于您的环境,但请注意这种可能性。还将$service行移动到foreach中,添加了-ComputerName$_
目前,您对此没有错误余地。该函数可能不存在,您应该对此负责。最好的建议是查看Get服务的-ErrorAction,可能还有一个Try/Catch块 已经有一段时间了,但我认为这个版本更清晰一些。为什么要检查它是否处于脱机状态,而不是仅在计算机处于联机状态时执行操作
function Get-RunService {
Get-Content "C:\powershell\computers.txt" |
foreach
{
if (Test-Connection -comp $_ -quiet)
{
$service = get-service -name ABCService -ComputerName $_ -ErrorAction SilentlyContinue
if ($service ) { Write-Host "$_ Installed" }
else { Write-Host "$_ Not Installed" }
}
else
{ Write-Host "$_ is offline!" -ForegroundColor Red }
}
}
已经有一段时间了,但我认为这个版本更清晰一些。为什么要检查它是否处于脱机状态,而不是仅在计算机处于联机状态时执行操作
function Get-RunService {
Get-Content "C:\powershell\computers.txt" |
foreach
{
if (Test-Connection -comp $_ -quiet)
{
$service = get-service -name ABCService -ComputerName $_ -ErrorAction SilentlyContinue
if ($service ) { Write-Host "$_ Installed" }
else { Write-Host "$_ Not Installed" }
}
else
{ Write-Host "$_ is offline!" -ForegroundColor Red }
}
}
$service只有您计算机的结果。不是那些遥远的。你永远不会改变它。您可能也无法按预期方式进行设置。$service仅具有您计算机的结果。不是那些遥远的。你永远不会改变它。您可能也没有按照预期的方式设置括号。