PowerShell
Cannot start queue. SSP: <GUID> SiteUID: <GUID> Url: Queue: ProjectQ
0
Log Name: Application Source: Microsoft-SharePoint Products-Project Server Event ID: 7626 Task Category: Queue Level: Critical Description: Cannot start queue. SSP: <GUID Project server application> SiteUID: <GUID Site> Url: Queue: ProjectQ
Vous avez également son frère jumeau, identique mais avec Url:  Queue: TimesheetQ
On va corriger, ça, mais pour les prochaines fois, il faut d’abord supprimer l’instance PWA et seulement après l’Application Web.
#Récupérer l’application project
$a= get-spserviceapplication | ? {$_.Typename -like "*Project*"}Â
#Vérifier qu'on a bien le pwa fantôme (mettre le guid siteUID)
$bad=$a.SiteCollection | ?{$_.SiteID -eq "a2c27d0d-1e66-43af-94d2-83b1b268658f"}Â
$bad| select id,name,siteid,webappid |flÂ
Id : 4d4389d1-e32b-43a3-8043-9105a83fceb8
Name : PWA fantome a supprimer:
SiteId : a2c27d0d-1e66-43af-94d2-83b1b268658f
WebAppId : 9a618b96-6b00-472c-93f7-4c5f53822050Â
#Si c'est ok, on supprime!Â
$bad.Delete()Â
#On relance les commandes pour valider qu'il a disparu
$bad=$a.SiteCollection | ?{$_.SiteID -eq "a2c27d0d-1e66-43af-94d2-83b1b268658f"}Â
$bad| select id,name,siteid,webappid |fl
Popularity: 2% [?]
Project Server 2010 – could not be deleted because other objects depend on it
0Problème:
Suite à la suppression partielle d’un site PWA, la recréation du même site échoue avec le message suivant:
An object in the SharePoint administrative framework, "ProjectDatabase Name=ProjectServer_Archive", could not be deleted because other objects depend on it. Update all of these dependants to point to null or different objects and retry this operation. The dependant objects are as follows:ProjectSite Name=c1a6cdf0-cf4b-452f-8fea-ef339e8be2cc
Solution:
La solution que j’ai appliqué est de supprimer le site pseudo fantôme:
$a=(Get-SPServiceApplication | ?{$_.Name -match "project"}).SiteCollection | ?{$_.SiteID -match "c1a6cdf0-cf4b-452f-8fea-ef339e8be2cc"}
$a
$a.delete()
et voilà !
Popularity: 1% [?]
Powershell: Project Server Set-SPProjectWebInstance & miroir SQL
0Si vous devez mettre en mirroir SQL les bases project, vous trouverez sur le net 2 choses à faire parmi pas mal:
- Set-SPProjectWebInstance en précisant PrimaryDBMirrorServer et ReportingDBMirrorServer
- AddFailoverServiceInstance
Donc pas moyen de savoir si quelqu’un l’a fait avant vous, ou si les paramètres sont les bons..D’autre part, quand on a beaucoup d’instance, il est intéressant d’utiliser son homologue Get-SPProjectWebInstance pour faire une boucle. Sauf que ce dernier n’est pas ergonomique en plus de ne pas donner toutes les propriétés. Voici un script qui:
- Récupère la liste de toutes url PWA via l’application de service (non non ils ne pouvaient pas le programmer par défaut)
- Enlève le « / » à la fin de l’url (sinon le Set- plante !)
- Repositionne tous les paramètres à l’identique (sisi il faut) et ajoute l’instance miroir (ouf).
$work=Get-SPServiceApplication | ?{$_.DisplayName -match"Project"} | Get-SPProjectWebInstance foreach ($item in $work) { Write-Output"doing $($item.url)" $mirror=$item.PrimaryServer -replace ("sqlone","sqltwo") Set-SPProjectWebInstance -Url ($item.Url).ToString().TrimEnd('/') ` -AdminAccount $item.AdminAccount ` -PrimaryDbserver $item.PrimaryServer ` -ArchiveDbname $item.ArchiveDatabase ` -DraftDbname $item.DraftDatabase ` -PublishedDbname $item.PublishedDatabase ` -ReportingDbServer $item.ReportingServer ` -ReportingDbname $item.ReportingDatabase ` -PrimaryDBMirrorServer $mirror` -ReportingDBMirrorServer $mirror }
Popularity: 7% [?]
Project Server 2010 SP1: échec de génération du cube
1Contexte:
- Project Server 2010 SP1
- Génération d’un cube OLAP
A queue job has failed. This is a general error logged by the Project Server Queue everytime a job fails – for effective troubleshooting use this error message with other more specific error messages (if any), the Operations guide (which documents more details about queued jobs) and the trace log (which could provide more detailed context). More information about the failed job follows. GUID of the failed job: . Name of the computer that processed this job: MyServer (to debug further, you need to look at the trace log from this computer). Failed job type: CBSRequest. Failed sub-job type: CBSQueueMessage. Failed sub-job ID: 2. Stage where sub-job failed: (this is useful when one sub-job has more than one logical processing stages).
Dans les logs SharePoint (ULS):
Cette méthode peut uniquement convertir les revendications d’identité et uniquement lorsqu’il existe une conversion logique.  Parameter name: encodedClaim
ConvertWindowsClaimToWindowsPrincipalName() encountered error: Some or all identity references could not be translated.
Résolution:
Parmi les utilisateurs déclarés dans Project, un ou plusieurs ont disparus d’Active Directory.
Normalement, cela est géré automatiquement si:
- Le service « user profile Synchronization » fonctionne,
- Les groupes project sont synchronisés avec des groupes AD
- Une synchro AD et une synchro des groupes Project ont tourné depuis la suppression.
import-module « ActiveDirectory«
$pwaUrl=« http://myspssite/pwa«
$svcProjectUrl=$pwaUrl+« /_vti_bin/PSI/Resource.asmx?wsdl«
$c=Get-Credential
$svcProjectProxy=New-WebServiceProxy -uri $svcProjectUrl -credential $c
$users=$svcProjectProxy.ReadUserList(« Active« ).Resources
foreach ($u in $users)
{
$temp= [regex]::Replace($u.WRES_ACCOUNT, « ^.*\\« , « »);
if ((get-aduser $temp) -eq $false)
{
« missing ad user « +($u.RES_NAME)
}
}
Popularity: 8% [?]
SharePoint 2010 PowerShell: UID finder
0En environnement SharePoint et projectServer 2010, les messages d’erreurs font presque tout le temps référence aux UID des objets et pas leur nom. Retrouver la nature de l’objet est parfois long et rébarbatif dans tous les cas.
Exemple:
Impossible de démarrer la file d’attente. Fournisseur de services partagés : ffaa66dd-8dcf-4a19-a24e-db16cd87ed67, UID du site : 79be68b6-87df-4431-9c32-bae0173c8ad0, URL : , File d’attente : ProjectQ
La traduction en Français ajoute encore un peu plus de difficulté.
Je me suis fait un script powershell qui cherche un uid ou un nom d’objet dans tout SharePoint
$id="<UID ou texte a chercher ici>" $search=@() $search+='Get-SPWebApplication -IncludeCentralAdministration | select Name,ID' $search+='Get-SPManagedAccount| select Name,ID' $search+='get-SPSiteAdministration -Limit ALL | select Name,ID' $search+='Get-SPWebApplication -IncludeCentralAdministration | Get-SPSite -Limit All | Get-SPWeb -Limit All|Sort-Object Url|Format-List Title, Url,ID' $search+='Get-SPSite -LIMIT ALL | select url,id' $search+='Get-SPDatabase| select Name,ID' $search+='Get-SPContentDatabase| select Name,ID' $search+='Get-SPServiceApplication | select Name,ID' $search+='Get-SPFeature | select Name,ID' $search+='Get-SPSolution | select Name,ID' $search+='Get-SPServiceApplication |% {$_.SiteCollection| select Name,ID}' $search+='Get-SPTimerJob | select Name,ID' foreach ($command in $search) { if ((Invoke-Expression $command) -match $id) { Write-Host"found $id" Write-Host"display it with $command" } }
Popularity: 8% [?]
SharePoint 2010 PowerShell : renommer une Application Web
0Une recherche google semble indiquer que renommer une application Web SharePoint est compliqué et passe par un backup/suppression/création/Restore.
Etant de nature un peu…Opiniatre ? j’y suis allé « au flanc » en PowerShell…Et ca marche
$a=Get-SPWebApplication | where {$_.Name -match "Demo"} #on vérifie que l'on a bien que l'application à modifier $a #On change le nom $a.Name="[Demo] demo blah blah" #On pousse la modification $a.Update() #on vérifie que le nom a bien changé Get-SPWebApplication | where {$_.Name -match "Demo"}
Popularity: 9% [?]
Enterprise Vault PowerShell: Unable to clear backup mode on vault store
0En voulant sortir Enterprise Vault du backup mode via PowerShell, j’ai eu le message d’erreur suivant:
Unable to clear backup mode on vault store…Check sthat storage service is running on computer

C’est un bug:
- Le service est bien démarré
- Quand on refait un Get-VaultStoreBackupMode on est bien sorti du mode backup
En fait EV est planté. Il faut quand même redémarré le storage service EV.
Popularity: 8% [?]
SharePoint 2010 PowerShell – New-SPProjectWebInstance : URI non valide : Impossible de déterminer le format de l’URI
0En voulant créer une instance Web SharePoint (project) via Powershell, j’ai eu le message suivant:
Le message d’erreur induit en erreur.
Ce n’est pas l’argument « -url » le problème, mais « -HostHeaderWebapplicationUrl ».
Je lui donnais un argument de la forme « monsite.mondomaine.com » alors qu’il lui faut un argument de la forme « http://monsite.mondomaine.com »
Popularity: 8% [?]
PowerShell: Measure-Command et Write-Output
1Measure-Command permet de mesurer le temps d’exécution d’un bloc de code PowerShell, de façon simple et efficace. Cependant, cela génère une contrainte:
Measure-Command n’affiche aucun write-output à l’écran!
Il faut alors utiliser par exemple write-host, qui lui envoi le texte directement à la console, et n’est donc pas impacté. Utiliser write-host peut générer des impact:
- Une redirection de la sortie écran vers un fichier ne fonctionnera pas ( > monlog.txt).
- L’ordonnanceur ORSYP ne gère pas bien les sorties faites par Write-host, alors que les write-output ne posent pas de problème
- …
Voici un script pour illustrer le sujet (ou à télécharger ici lotp_test_measure-command):
#******************************************************************************
#
# Titre: lotp_test_measure-command.ps1
#
# Description: test de measure-command
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************
#purge de l’écran
Clear
#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Write-Output « Test 01: fait un sleep de 2s dans un measure-command«
$temps=Measure-Command { sleep -Seconds 2}
Write-Output « temps d’exécution du test 01: $temps«
Write-Output « ############«
Write-Output « Test 02: fait un write-output dans un measure-command«
$temps=Measure-Command {Write-Output « ce message est supprimé par measure-command, vous ne le verrez pas« }
Write-Output « le message n’est pas apparu mais la commande est exécutée quand même«
Write-Output « temps d’exécution du test 02: $temps«
Write-Output « ############«
Write-Output « Test 03: fait un write-host dans un measure-command«
$temps=Measure-Command {Write-host « ce message est envoyé à la console, vous le voyez même dans un measure-command« }
Write-Output « temps d’exécution du test 03: $temps«
Popularity: 10% [?]
Powershell : tableau multidimensionnel (array de array)
3J’ai dû récemment stocker des valeurs dans des tableaux (array) multidimensionnel en PowerShell. J’ai quelques peu galéré, et je me suis dit que je ne devais pas être le seul. Mes recherches d’infos via Google ne ramenaient pas grand chose, il est donc temps d’y remédier…
L’objectif est de stocker plusieurs ensembles de valeurs dans un tableau, afin de pouvoir les appeler dans une boucle for.
Ce qui m’a induit en erreur: Si on ne met pas une virgule au départ, cela ne fonctionne pas….Sauf si on met plus d’un élément lors de l’initialisation du tableau de tableau…Tout se complique quand on change et ne met plus qu’un seul élément… Patatras!
Voici un script qui explicite les différents cas, le dernier étant celui qu’il faut utiliser:
Egalement en téléchargement ici: lotp_test_array_of_array
#******************************************************************************
#
# Titre: lotp_test_array_of_array.ps1
#
# Description: test sur des array
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************
#purge de l’écran
Clear
#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Function afficherTableau($array)
{
for ($i=0;$i -lt $array.Length;$i++)
{
Write-Output « boucle N°: $i »
Write-Output $array[$i][0]
Write-Output $array[$i][1]
Write-Output $array[$i][2]
Write-Output « ——– »
}
}
#Ce tableau ne fonctionne pas du tout comme prévu (il manque la virgule au début pour cela)
$tableauMauvais=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
Write-Output « Affichage mauvais tableau »
afficherTableau $tableauMauvais
#Ce tableau fonctionne mais la construction n’est pas correcte (pas de virgule au début, mais ok car 2 éléments)
$tableauPasCorrect=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »),(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne mais mal construit »
afficherTableau $tableauPasCorrect
#Tableau multidimensionnel construit correctement
#creation du tableau avec un seul élément (virgule avant la parenthèse)
$tableauCorrect=,(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
#Ajout d’un élément
$tableauCorrect+=,(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne et bien construit »
afficherTableau $tableauCorrect
Pour la coloration syntaxique dans le blog, j’ai utilisé le script PowerShell proposé ici:
http://helgeklein.com/blog/2010/01/syntax-highlighting-powershell-code-in-html-with-a-powershell-script/
Popularity: 14% [?]

