2009-06-26 21 views
6

He creado un proyecto de servicio de Windows utilizando el proyecto de tipo de servicio Windows de VSTS 2008 y ahora quiero escribir scripts para instalarlo/desinstalarlo con PowerShell.instalar/desinstalar un servicio de Windows

¿Hay muestras o documentos de referencia?

Respuesta

4

No mencionó el idioma que está utilizando. Lo más probable es que el windows install utility puede manejarlo.

+0

Estoy usando C#. ¿Alguna idea más? – George2

+0

InstallUtil yourservice.exe – Glenn

2

Si entiendo su pregunta correctamente, primero necesita crear un instalador desde VSTS. Ha sido un tiempo desde que he hecho una, pero básicamente es el siguiente:

http://csharpcomputing.com/Tutorials/Lesson22.htm

Una vez que haya creado un instalador, puede automatizar con PowerShell.

Si realmente desea que PowerShell sea su instalador de servicios, puede haber una manera de automatizar el instalador de servicios de Windows desde PowerShell utilizando el ServiceInstaller Class.

18

Aquí hay una versión desinfectada de un script de instalación que escribí. Debe demostrar todo lo que necesita hacer:

## delete existing service 
# have to use WMI for much of this, native cmdlets are incomplete 
$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'" 
if ($service -ne $null) 
{ 
    $service | stop-service 
    $service.Delete() | out-null 
} 

## run installutil 
# 'frameworkdir' env var apparently isn't present on Win2003... 
$installUtil = join-path $env:SystemRoot Microsoft.NET\Framework\v2.0.50727\installutil.exe 
$serviceExe = join-path $messageServerPath MyService.exe 
$installUtilLog = join-path $messageServerPath InstallUtil.log 
& $installUtil $serviceExe /logfile="$installUtilLog" | write-verbose 

$service = Get-WmiObject -Class Win32_Service -Filter "Name = 'My Service'" 

# change credentials if necessary 
if ($user -ne "" -and $password -ne "") 
    { $service.change($null, $null, $null, $null, $null, $null, $user, $password, $null, $null, $null) | out-null } 

# activate 
$service | set-service -startuptype Automatic -passthru | start-service 
write-verbose "Successfully started service $($service.name)" 
Cuestiones relacionadas