提问人:ByteSize 提问时间:11/10/2023 最后编辑:ByteSize 更新时间:11/13/2023 访问量:20
使用 PowerShell 修复有关 Services.msc 或服务的问题
Fixing an issue regarding Services.msc or Services with PowerShell
问:
除了我的问题之外,如果可能的话,我希望对特殊的 Windows 服务应用程序有一些见解,以防我没有正确理解这一切是如何工作的。谢谢。
上下文:
我正在编写一个 PowerShell 脚本,该脚本手动创建 Windows 服务,并删除或清理它(如果存在)。我的脚本尝试事先停止服务。
问题:
当我在 PowerShell 脚本中创建和删除服务时,它们可能会被打开的服务应用程序阻止
我认为潜在的解决方案可能是
- 获取 sc.exe 创建和删除命令以通过 PowerShell 完全完成服务的删除和创建,而不仅仅是标记
- 能够正确检查 Services.msc 或 Services 是否打开(在任务栏上处于活动状态)
任何帮助都是值得赞赏的!
我想先说我可能会将结果与sc.exe创建和删除混淆,但无论哪种方式,我相信我在这里遇到了问题。
到目前为止,我已决定尝试检查服务应用程序是否打开,但无法使其正常工作。根据我创建和删除 Windows 服务的经验,我让这个应用程序阻止了在 PowerShell 中运行这些命令的功能。一个例子是(sc.exe delete “SomeService”)给出反馈,例如“x 被标记为删除”,但不会删除它,例如,直到它关闭或服务本身停止。
我也尝试过杀死服务的任务或进程,但不确定我是否能做到这一点。我无法绕过它的权限。
答:
0赞
Douda
11/10/2023
#1
正如评论中提到的,这里有一个可能适合您的片段
# Set the name of the service and process to check for
$serviceName = "Application1Service"
$processName = "application1.exe"
# Check if the service is running
if (Get-Service $serviceName -ErrorAction SilentlyContinue | Where-Object {$_.Status -eq "Running"}) {
# Stop the service
Stop-Service $serviceName
# Check if the process is running
if (Get-Process $processName -ErrorAction SilentlyContinue) {
# Kill the process
Stop-Process -Name $processName -Force
}
# Delete the service (CmdLet available from Powershell 6.0)
Remove-Service $serviceName
}
评论