TFS api + powershell

Ninja

Existen varias formas en las cuales podemos extraer información del tfs en sus varias versiones, la mayoría son con las dll propias que están junta con la instalación o bien con la api que bien se esta desarrollando y están metiendo mas y mas cosas interesantes

  1. Que ventaja se tiene de hacerlo con powershell:
  2. No se requiere un IDE de programación
  3. No necesitas tener conocimientos de programación de un lenguaje en particular (c#, vb.net)
  4. No requieres una licencias para hacer una posible auditoria
  5. Lo puedes realizar en cualquier equipo prestado, a fin de cuentas si vemos esto es porque somos los Admin del servicio.
  6. Etc,

 

Comencemos

Para poder darle vida y explotación a la api del tfs tenemos que tener una guía de referencia, esta la encuentran en:  image

https://www.visualstudio.com/en-us/integrate/api/overview

 

Para este ejemplo y como me ha tocado administrar varios proyectos de repente me solicitaban auditorias de proyectos,usuarios, permisos etc. En este ejemplo solo voy a mostrar los proyectos que están cargados en un tfs.

Porque hacerlo así si también tenemos la opción de tf dir, básicamente porque al tener la integración del tipo de control de versiones git el comando tf dir solo muestra los proyectos que se han creado con el tipo de controlador de versiones TFVC, por lo tanto si existen proyectos del tipo git el comando tf dir no los va a mostrar.

Asumiendo esto, entonces va el procedimiento para obtener el listado de todos mis proyectos en la colección, según el api dice:

https://TUTFS.visualstudio.com/DefaultCollection/_apis/projects?=&api-version=1.0

Si ejecutamos esta url en un navegador nos muestra un JSON, pego imagen cortada para no editar tantos datos particulares)

image

Con estos datos los podemos tratar (según lo que requiramos para este punto- consultar la api), vamos a intentar sacarlos los proyectos con powershell donde podríamos meter un poco mas de automatización de algún proceso que requiramos que se deba de ejecutar de forma masiva.

Si invocamos desde powershell la url

Invoke-RestMethod -Uri https://TUTFS.visualstudio.com/DefaultCollection/_apis/projects?=&api-version=1.0 -Method Get

Obtenemos muchas cosas menos la información que requerimos, en lo particular me quede atorado en este punto porque en la respuesta me arrojaba esto

                    <span class=”error”>Microsoft Internet Explorer's Enhanced Security Configuration is currently enabled on your environment. This enhanced level of security prevents our web in
tegration experiences from displaying or performing correctly. To continue with your operation please disable this configuration or contact your administrator.</span>

image

Tratando de quitar el error por sistema operativo, realice las acciones que indicar como cambiar esa propiedad mencionada pero en la ejecución de powershell aun lo obtenía.Entonces  a cambiar de estrategia y buscar mas info

Para que sea exitoso el script de powershell debemos de cambiar algo antes en el portal de tfs, para ello entramos a la colección.

Dar click en el nombre de usuario

image

Dar click en My profile

image

Ir a la pestaña security y dar click en Alternate authentication credentials

image

Llenar los campos que muestra en pantalla, Ojo estos mismos serán los que deberán de ir en nuestro script de powershell

image

 

Salvamos y regresamos a la ventana de powershell y escribimos todo lo siguiente, (cambiando lo señalado)

 

$username = “TUUsuario
$password = “TUContraseña

$basicAuth = (“{0}:{1}” -f $username,$password)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=(“Basic {0}” -f $basicAuth)}

Invoke-RestMethod -Uri https://TUTFS.visualstudio.com/DefaultCollection/_apis/projects?=&api-version=1.0 -headers $headers -Method Get

Regresa un JSON

image

Si queremos manipularlo para verlo mejor en powershell hacemos lo siguiente

$a=Invoke-RestMethod -Uri https://TUTFS.visualstudio.com/DefaultCollection/_apis/projects?=&api-version=1.0 -headers $headers -Method Get

Para ver el json en pantalla

$a |ConvertTo-Json

image

Vemos los campos que solo queremos mostrar, como el campo value trae toda la colección de información

$a.value |select name,state

Listo , terminamos el inventario de team projects del TFS

image

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s