簡體   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