当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 检查服务是否正在 PowerShell 中运行 [3 种方法]

作者:精品下载站 日期:2024-12-14 05:24:50 浏览:11 分类:玩电脑

检查服务是否正在 PowerShell 中运行 [3 种方法]


[玩转系统] 检查服务是否正在 PowerShell 中运行 [3 种方法]

使用 Get-Service Cmdlet

Get-ServiceWhere-Object cmdlet 结合使用来检查特定服务是否正在我们的本地计算机上运行。

使用获取服务 Cmdlet:

Get-Service |
Where-Object {
($_.Status -EQ "Running") -and
($_.DisplayName -EQ "Workstation")
}

输出 :

Status   Name               DisplayName
------   ----               -----------
Running  LanmanWorkstation  Workstation

如果您需要添加 if 条件,请转到本节。

我们使用 Get-Service cmdlet 来获取本地计算机上所有服务的列表;然后,该列表通过管道传输到 Where-Object cmdlet,该 cmdlet 根据指定条件过滤列表。脚本块包含在大括号 ({}) 中,并包含为列表中的每个服务运行的脚本。

此命令中的脚本块包含两个条件,用于检查每个服务的状态 ($_.Status) 和每个服务的显示名称 ($_.DisplayName)。条件是一个布尔表达式,仅当服务状态为 Running (-EQ "Running") 且显示名称为 True 时,该表达式才为 True该服务的名称是Workstation (-EQ "Workstation")。 -and 运算符组合两个条件,如果两者都为 true,则返回 True

Get-Service cmdlet 仅在 Windows 平台上可用,用于检索本地或远程计算机上的所有服务。首先,它获取计算机上表示为服务的对象,其中包括 StoppedRunning 服务。然后,它显示与服务相关的信息,例如服务的 StatusDisplayNameName

默认情况下,当运行不带参数的 Get-Service cmdlet 时,将返回所有本地计算机的服务。我们可以通过提供服务名称或服务的显示名称来指示此 cmdlet 仅检索特定服务,或者我们可以通过管道将服务对象传递给此 cmdlet。

结果列表仅包含满足这两个条件的服务。如果没有满足这两个条件的服务,则列表将为空。

使用带有 if-else 块的 Get-Service Cmdlet

要检查特定服务是否正在 PowerShell 中运行:

  • 获取服务名称为WSearch的服务对象并将其保存在变量中。
  • 使用 if-else 块来评估服务对象的 Length 属性(这里,我们使用在上一步中创建的服务对象)。
  • 如果 .Length 属性的值大于 0,则打印 Running;否则,已停止

将 Get-Service Cmdlet 与 if-else 块结合使用:

$service = Get-Service -Name WSearch -ErrorAction SilentlyContinue

if ($service.Length -gt 0) {
    Write-Host "Running"
}else{
Write-Host "Stopped"
}

此 PowerShell 脚本使用 Get-Service cmdlet 检索名为 WSearch 的服务的服务对象,并检查服务对象的 .Length 属性。如果它大于0,则服务正在运行,并且脚本会显示一条消息:Running;否则,服务将停止,并且消息将显示已停止

请注意,如果服务暂停,此脚本将不起作用,因为即使服务暂停,$service 对象仍然存在。要检查暂停的服务,您需要使用服务对象的 .Status 属性,如下所示:

将 Get-Service Cmdlet 与 if-else 块结合使用:

$service = Get-Service -Name WSearch -ErrorAction SilentlyContinue

if ($service.Status -eq "Running") {
    Write-Host "Running"
} elseif ($service.Status -eq "Paused") {
    Write-Host "Paused"
} else {
    Write-Host "Stopped"
}

上面的脚本将根据服务的状态(无论是正在运行、暂停还是停止)正确显示消息。

到目前为止,我们已经了解了如何检查服务的状态,无论是正在运行、已停止还是已暂停。如果我们需要创建一个服务应用程序、运行它并检查其当前状态怎么办?让我们在下一节中了解这一点,但在此之前,有必要了解服务和服务应用程序之间的区别。

在 PowerShell 中,服务是指在本地/远程计算机上运行的后台进程或系统组件。服务负责执行各种任务,例如运行 Web 服务器、执行备份或监视系统性能。

这些可以使用 Get-ServiceStart-ServiceStop-ServiceRestart-Service cmdlet 进行管理,它们是内置 PowerShell 框架的一部分。我们可以使用这些 cmdlet 检索本地/远程计算机上所有服务的列表、启动停止服务,或重新启动服务服务。

服务应用程序是SharePoint场中使用的特定类型的服务。这些应用程序为 SharePoint 提供不同的功能和特性,例如搜索、托管元数据或用户配置文件。这些是使用 SharePoint PowerShell cmdlet 进行管理的,这些 cmdlet 是 SharePoint Management Shell 的一部分。

我们可以使用 Get-SPServiceApplication cmdlet 检索 SharePoint 场中所有服务应用程序的列表(我们将在下一节中了解它),并使用 Start-SPServiceApplicationStop-SPServiceApplication cmdlet 用于启动或停止服务应用程序。

因此,服务是一个通用术语,指的是在计算机上运行的后台进程或系统组件。相比之下,服务应用程序是SharePoint 场中使用的特定类型的服务,用于向SharePoint 提供各种功能和特性。

使用 Get-SPServiceApplication Cmdlet

要在 PowerShell 中创建并运行服务应用程序:

  • 使用 Add-PSSnapin cmdlet 添加 SharePoint PowerShell 管理单元。
  • 使用 Get-SPServiceApplication 检索当前场中的所有服务应用程序。
  • 使用 Where-Object 过滤从步骤 2 收到的结果,仅将包含 DisplayName 的服务应用程序作为托管元数据服务
  • 使用 if-else 块检查服务应用程序是否不等于 null 并根据条件显示一条消息。

注意:我们的计算机上必须装有 SharePoint 才能使用以下脚本。

使用 Get-SPServiceApplication Cmdlet:

Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
$DisplayName="Managed Metadata Services"
$ServiceApp = Get-SPServiceApplication | Where-Object { $_.DisplayName -eq $DisplayName}

if($ServiceApp -ne $null){
    $ServiceApp.Status
}else{
 Write-Host "Service application either not found or not created!"
}

上面的脚本检查了 SharePoint 中托管元数据服务服务应用程序的状态。首先,我们使用 Add-PSSnapin 添加 SharePoint PowerShell 管理单元,这使我们能够在当前 PowerShell 会话中使用 SharePoint cmdlet。

接下来,我们将名为 $DisplayName 的变量设置为字符串 “托管元数据服务”。然后,它使用 Get-SPServiceApplication cmdlet 获取当前场中的所有服务应用程序,并使用 Where-Object cmdlet 筛选结果,仅包含其 DisplayName 属性与 $DisplayName 变量的值匹配。此过滤后的服务应用程序列表存储在 $ServiceApp 变量中。

然后,该脚本检查 $ServiceApp 变量是否不 null,这表明我们至少找到了一个服务应用程序。如果 $ServiceApp 不为 null,则脚本使用 $ServiceApp.Status 输出服务应用程序的 Status 属性> 表达。

如果 $ServiceAppnull,则脚本会输出一条消息,指示未找到或未创建服务应用程序。

如果您担心服务应用程序的当前状态,那么下面的代码围栏将是您的解决方案。

使用 Get-SPServiceApplication Cmdlet:

$TypeName="Managed Metadata Service"
$SeviceApp = Get-SPServiceApplication | Where-Object {$_.TypeName -eq $TypeName}

我们可以使用 $ServiceApp 变量对服务应用程序执行各种操作,例如获取其属性、启动或停止它或删除它。以下示例演示了如何使用 $ServiceApp 变量来启动服务应用程序。

使用 Get-SPServiceApplication Cmdlet:

$TypeName="Managed Metadata Service"
$ServiceApp = Get-SPServiceApplication | Where-Object {$_.TypeName -eq $TypeName}
$ServiceApp | Start-SPServiceInstance

这就是如何在 PowerShell 中检查 Service 是否正在运行。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯