PROJECT SERVER 2010. PROJECT SERVER 2013. PUBLICACION AUTOMATICA DE PROYECTOS USANDO POWERSHELL.


Hola, buenas

En este post queríamos hablar de una manera muy efectiva de publicar nuestros proyectos de manera automática, usando un script de PowerShell. Hay que agradecer a a PWMather por compartirlo con nosotros. El script se puede encontrar en los siguientes enlaces

https://pwmather.wordpress.com/2012/01/23/publish-all-projects-in-projectserver-using-powershell-msproject-ps2010-sp2010/

Ese era el enlace original, para la versión de Project Server 2010, y aquí tenemos la última versión, que es la que recomendamos, ubicada en la galería de scripts de TechNet:

https://gallery.technet.microsoft.com/projectserver/Server-2010-Publish-all-45ba385b

El script en sí es muy sencillo:

 

$svcPSProxy = New-WebServiceProxy -uri http://hostname/pwaname/_vti_bin/PSI/Project.asmx?wsdl -useDefaultCredential
$EPMTYGUID = [system.guid]::empty
$ProjectList = $svcPSProxy.ReadProjectStatus("$EPMTYGUID","WorkingStore","", "0").Project | format-table proj_uid -hidetableheaders | out-string -stream
foreach ($projectUid in $projectList)
{
    if ($projectUid -ne "")
    {
$G = [System.Guid]::NewGuid()
$svcPSProxy.QueuePublish("$G", $projectUid, "true","")}}

 

Para hacerlo funcionar en nuestro sitio PWA, no tenemos más que adecuar el nombre del sitio PWA: http://hostname/pwaname

Por favor, probadlo primero en un entorno de pruebas, antes de hacerlo en uno de producción.

 

Esperamos os resulte de interés, un saludo

 

Jorge Puig

Comments (4)

  1. Hola, John
    Gracias por el comentario. Puede resultar interesante, desde luego, pero las pruebas que he realizado en mi entorno, con muchos proyectos, no he tenido problemas. Los trabajos van llegando a la cola, y desde ahí se administra su procesamiento, de tal modo,
    que no debiera resultar determinante indicar el tiempo de "sleep" entre los trabajos de publicación, o lotes de ellos…

    Un saludo

    jorge

  2. Hola Hugo

    Perdona el retraso en contestar. Mira a ver con qué credenciales estás ejecutando el script; parece no tener privilegios.

    Suerte!

    jorge

  3. John McKenrow says:

    Hola, no es un poco arriesgado que el script no contemple un tiempo de sleep entre publicacion y publicacion o cada cierto numero de lotes? La cola podria quedar colapsada

    Saludos
    John

  4. Hugo Caudillo says:

    Hooola. Estoy ejecutando el script en un servidor de pruebas, con project server 2010. Pero me marca un error, crees que pudieras asesorarme? .. de antemano muchas gracias.

    saludos

    Exception calling "ReadProjectStatus" with "4" argument(s): "The request failed with HTTP status 401: Unauthorized."
    At line:3 char:45
    + $ProjectList = $svcPSProxy.ReadProjectStatus <<<< ("$EPMTYGUID", "WorkingStore", "", "0").Project | format-table proj_uid -hidetableheaders | out-string -stream
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Skip to main content