2010-09-20 19 views
2

Nous avons personnalisé le processus de génération avec une action InvokeProcess exécutant un script PowerShell qui déploie sln.Cause TFS InvokeProcess Build Activity à exécuter sous d'autres informations d'identification

Le problème est que ce script doit être exécuté sous un utilisateur donné (pas l'utilisateur tfsbuild).

Comment pouvons-nous réaliser cela?

  • Alternative 1: Faire le InvokeProcess Exécuter en tant qu'utilisateur différent -
  • Alternative 2: Faire le script Powershell se terme comme différent de l'utilisateur

problème est que je ne sais pas comment faire tout ça.

Répondre

3
+0

Merci! Je suis nouveau au wwf et au processus de construction personnalisé. Pourriez-vous décrire brièvement les étapes pour commencer à utiliser votre code? Dois-je construire une DLL? Placez-le où? Appelez-le de l'endroit où? J'utilise le bloc d'activité InvokeProcess, j'imagine que je devrais appeler ce bloc depuis le bloc using, mais comment? Merci beaucoup pour votre temps. – Larsi

+0

Vous pouvez trouver ces réponses dans le reste de la série: http://www.ewaldhofman.nl/?tag=/build+2010+customization –

+0

ok, merci. Je pense avoir obtenu la plupart des réponses, mais je n'arrive pas à comprendre pourquoi nous devons créer un projet Template (partie 4). Ne devrait-il pas suffire de créer une nouvelle codeactivité, puis l'ajouter à la boîte à outils (choisir l'élément) et commencer à l'utiliser? (et bien sûr sur le contrôleur de construction ajouter un chemin). Impossible de comprendre ce qui se passe avec le projet de modèle. Merci pour toute précision. – Larsi

2

Une option pure PowerShell, en supposant que vous avez PowerShell 2.0 sur votre machine TeamBuild, est d'utiliser un travail de fond. Start-Job vous permet de spécifier les informations d'identification d'un autre compte pour effectuer le travail. Après filer le travail de fond dans votre script, vous voudrez probablement attendre le travail pour terminer et saisir les résultats à la sortie du script principal, par exemple:

$cred = Get-Credential 
$job = Start-Job -ScriptBlock { ls c:\windows\system32 -r *.sys } -Cred $cred 
Wait-Job $job 
Receive-Job $job 

En ce qui concerne la capture, le stockage et la récupération des informations d'identification, voir ceci blog post for a good treatise sur le sujet.