Powershell: Project Server Set-SPProjectWebInstance & miroir SQL

Si 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
D’après mes essais, la seconde ne suffit pas à elle seule. Et là commence la joie des cmdlet pas tout à fait finie…Je m’explique: Cette commande permet bien de configurer un serveur SQL miroir, mais son équivalent en Get- ne permet pas de voir ces valeurs!

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 
} 

SharePoint 2010: People search relevance is not optimized when the Active Directory has errors in the manager reporting structure

L’analyseur SharePoint remonte souvent cet avertissement:

Il faut commencer par identifier les comptes AD sans manager. Par exemple avec adfind:

adfind -f "(&(objectclass=user)(!(manager=*)))" samaccountname -qlist

Il suffit ensuite, pour ceux ne devant pas avoir de manager, d’utiliser les commandes Add-SPProfileleader comme indiqué dans le message.

 

Essayez MS Project Server gratuitement pendant 15 jours!

Je participe actuellement à un projet pour le moins…Passionnant !

Il s’agit de fournir MS Project client et server dans le cloud. L’accès se fait entièrement via https, et uniquement ce protocole. Plusieurs méthodes d’accès:

  • Vous avez MS Project sur votre ordinateur: connectez-le au serveur
  • Vous voulez juste voir la partie serveur: accédez depuis Internet Explorer
  • Vous voulez tester l’ensemble: passez par le portail pour lancer un client MS Project sans rien installer chez vous

L’accès est ouvert dans les 5 minutes sans demander de compte paypal ni carte de crédit.

https://www.pmside.net/try/ 

SharePoint 2010 PowerShell: UID finder

En 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" 
 } 
}

Sécuriser son Windows dans le cloud (Dedibox/Amazon…)

Suite  à mon retour vers Dedibox, et le fait que j’y installe du Windows, je me suis demandé ce que je pouvais faire pour la sécuriser.

Voici les pistes envisagées:

  • Pas de port TCP accessible directement. Passer donc par exemple avec LogMeIn, au moins pendant la configuration. L’accès idrac n’est pas assez fluide et simple d’accès.
  • Renommer le compte Administrateur via GPedit
  • Interdire l’affichage du dernier compte authentifié via GPedit.
  • Ajouter un disclaimer, toujours via GPedit. Cela n’arrêtera pas un pirate motivé, mais peu suffire à bloquer certains logiciels de brute force RDP.
  • Autoriser RDP mais:
    • Sur un port TCP non standard. Procédure Microsoft : http://support.microsoft.com/kb/306759/en-us/
    • Utiliser le firewall Windows pour autoriser l’accès uniquement depuis certaines IP fixes. Pour y accéder depuis ailleurs, d’abord se connecter en LogMeIn pour modifier la règle firewall.
    • Autoriser uniquement les clients permettant une authentification réseau.
  • Scanner régulièrement les adresses IP depuis l’extérieur avec nmap pour vérifier ce qui est visible.
  • Appliquer les mises à jour Windows dès leur sortie.

Dedibox: Nat de VM Hyper-V

Suite au retour sur Dedibox, j’ai décidé d’utiliser Hyper-V plutôt que VMware pour la virtualisation. Les adresses IP publiques sont facturées chez Online.net, et d’autre part je ne veux pas que certaines VM soient exposées sur Intrenet (DC, Exchange…).

Par défaut, Hyper-V ne permet pas de faire du Nat, et donc cacher tout se beau monde tout en leur donnant accès à Internet.

Voici les grandes étapes:

  • Installer le rôle Network Policy and Access Services
  • Créer un réseau interne dans Hyper-V
  • Assigner une adresse IP fixe (ex 192.168.1.1) sur la carte réseau du réseau ainsi crée (carte virtuelle Hyper-V)
  • Configurer Routing and Remote Access pour faire du NAT
  • Configurer les VM afin d’utiliser le réseau virtuel Hyper-V et de passer en DHCP ou IP fixe suivant vos souhaits.

Ajouter le rôle

Configurer le NAT

Un usage atypique du firewall Windows 7

On pense souvent aux firewall, et celui intégré à Windows en particulier pour autoriser des flux entrants. Je vous propose là un autre usage, qui s’avère très commode:

Empêcher des applications de se connecter à Internet.

Ce blocage, sélectif, est redoutable : inutile de savoir les ip de destinations, car on bloque directement au niveau du processus. Donc même Akamai n’est plus un soucis 🙂

Un cas concret ? Un jeu qui aime bien aller sur les serveurs de l’éditeur pour faire pleins de choses inutiles.

La seule chose à faire est de ne pas oublier un autre exécutable que pourrait lancer le processus principal. Process explorer permet de voir les processus par exemple. Dans le toute, les faire tous 🙂

Certains verront peut être enfin un intérêt au firewall 😉