繁体   English   中英

对于 dotnetcore 3.1 Windows 服务如何使用 powershell 脚本 5.1 停止、卸载、安装和启动服务

[英]For dotnetcore 3.1 Windows service how to stop, uninstall, install and start the service with a powershell script 5.1

对于初学者,我为 PS 5.1 制作了以下脚本(我知道 PS 6.0 有 Remove-Service 选项,但没有 5.1)。

我拥有所有必需的 .exe、dll 和配置以及打包为工件的脚本,并将部署在目标的 Headnode 目录中。

不确定以下脚本是否会卸载并安装该服务。 但是当我运行它时,我可以看到它正在删除并启动新服务。**

```
$acl = Get-Acl "C:\Program Files\Matt\Wservice"
$aclRuleArgs = "XYZ", "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
if (Get-Service "Wservice" -ErrorAction 'SilentlyContinue')
{
     Stop-Service -Name Wservice -ErrorAction SilentlyContinue -Force
     (Get-WmiObject -Class Win32_Service -filter "Name='Wservice'").delete()
     Write-Host "Please wait until removing the : Wservice  " 
     Start-Sleep -s 30 
    }
$Username = 'xyz'
$Password = '123'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username,$pass
New-Service -Name  Wservice -BinaryPathName "C:\Program Files\Matt\Wservice\Wservice.exe" -Credential $MySecureCreds -DisplayName "WserviceService"  -StartupType Automatic
Start-Service -Name "Wservice"
```
  • Powershell 核心 6.0/7.0 似乎没有get-wmiobject ,WMI 已弃用,那么我们必须使用Get-CIMInstance来使用 CIM。

休息似乎一切正常。 核心代码:

$acl = Get-Acl "C:\Program Files\Matt\Wservice"
$aclRuleArgs = "XYZ", "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
if (Get-Service "Wservice" -ErrorAction 'SilentlyContinue')
{
     Stop-Service -Name Wservice -ErrorAction SilentlyContinue -Force
     (Get-CIMInstance -Class Win32_Service -filter "Name='Wservice'").delete()
     Write-Host "Please wait until removing the : Wservice  " 
     Start-Sleep -s 30 
    }
$Username = 'xyz'
$Password = '123'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username,$pass
New-Service -Name  Wservice -BinaryPathName "C:\Program Files\Matt\Wservice\Wservice.exe" -Credential $MySecureCreds -DisplayName "WserviceService"  -StartupType Automatic
Start-Service -Name "Wservice"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM