How to create a Windows Service in Powershell for Network Service account?
How to create a Windows Service in Powershell for Network Service account?
The correct name of the account is NT AUTHORITYNETWORK SERVICE
.
This is the final version of Reinstall Service for everyones benefit, specially for Aniket.
function ReinstallService ($serviceName, $binaryPath, $description, $login, $password, $startUpType)
{
Write-Host Trying to create service: $serviceName
#Check Parameters
if ((Test-Path $binaryPath)-eq $false)
{
Write-Host BinaryPath to service not found: $binaryPath
Write-Host Service was NOT installed.
return
}
if ((Automatic, Manual, Disabled) -notcontains $startUpType)
{
Write-Host Value for startUpType parameter should be (Automatic or Manual or Disabled) and it was $startUpType
Write-Host Service was NOT installed.
return
}
# Verify if the service already exists, and if yes remove it first
if (Get-Service $serviceName -ErrorAction SilentlyContinue)
{
# using WMI to remove Windows service because PowerShell does not have CmdLet for this
$serviceToRemove = Get-WmiObject -Class Win32_Service -Filter name=$serviceName
$serviceToRemove.delete()
Write-Host Service removed: $serviceName
}
# if password is empty, create a dummy one to allow have credentias for system accounts:
#NT AUTHORITYLOCAL SERVICE
#NT AUTHORITYNETWORK SERVICE
if ($password -eq )
{
#$secpassword = (new-object System.Security.SecureString)
# Bug detected by @GaTechThomas
$secpasswd = (new-object System.Security.SecureString)
}
else
{
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
}
$mycreds = New-Object System.Management.Automation.PSCredential ($login, $secpasswd)
# Creating Windows Service using all provided parameters
Write-Host Installing service: $serviceName
New-Service -name $serviceName -binaryPathName $binaryPath -Description $description -displayName $serviceName -startupType $startUpType -credential $mycreds
Write-Host Installation completed: $serviceName
# Trying to start new service
Write-Host Trying to start new service: $serviceName
$serviceToStart = Get-WmiObject -Class Win32_Service -Filter name=$serviceName
$serviceToStart.startservice()
Write-Host Service started: $serviceName
#SmokeTest
Write-Host Waiting 5 seconds to give time service to start...
Start-Sleep -s 5
$SmokeTestService = Get-Service -Name $serviceName
if ($SmokeTestService.Status -ne Running)
{
Write-Host Smoke test: FAILED. (SERVICE FAILED TO START)
Throw Smoke test: FAILED. (SERVICE FAILED TO START)
}
else
{
Write-Host Smoke test: OK.
}
}
How to create a Windows Service in Powershell for Network Service account?
You could get a cred of network service straightforward like this:
$login = NT AUTHORITYNETWORK SERVICE
#### #just set a dummy psw since its just used to get credentials
$psw = dummy
$scuritypsw = ConvertTo-SecureString $psw -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($login, $scuritypsw)
#### #then you can use the cred to new a windows service
$serviceName = Test
$binaryPath = C:TestTest.exe
New-Service -name $serviceName -binaryPathName $binaryPath -displayName $serviceName -startupType Automatic -credential $mycreds