Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Authentification avec prise en charge des fournisseurs installés avec Windows PowerShell

La commande get-credential obtient un objet credential (informations d’identification) basé sur le nom et mot de passe d’un utilisateur.

Cependant, cette commande est incompatible avec les fournisseurs installés avec Windows Powershell.

Exemple d’une copie de fichier sans crédential

clip_image002

Maintenant, essayons en spécifiant un utilisateur.

clip_image004

image

clip_image008

On peut donc voir que le fournisseur n’est pas compatible en définissant un crédential.

Maintenant, nous allons voir comment permettre une authentification via le module impersonation disponible à cette adresse : http://poshcode.org/get/1867

Cette astuce devra être exécuté avec Powershell en mode STA : Single-Threaded Apartments car le module que nous allons importer n’est compatible que dans ce mode.

Exécuter :

clip_image010

(En mode STA, la fenêtre Powershell est noir par défaut)

clip_image012

Maintenant on récupère notre variable d’authentification comme auparavant.

clip_image014

Si on exécute une copie de fichier avec la variable $cred, on peut voir que cela ne fonctionne toujours pas.

clip_image016

Maintenant, on va importer le module « impersonation » qui va mettre à notre disposition trois nouvelles commandlets.

clip_image018

A l’aide de Push-ImpersonationContext, on va maintenant récupérer notre variable $cred. Et à partir de là, on peut réessayer une copie de fichier qui auparavant ne fonctionnait pas.

clip_image020

Cela fonctionne désormais.

Pour effacer de la mémoire l’authentification, nous avons la variable Pop-impersonationContext disponible.

Exemple :

Nous supprimons le fichier copié là où celui-ci a fonctionné auparavant et nous utilisons la cmdlet Pop-impersonationContext. Nous réessayons donc une nouvelle fois notre copie de fichier :

clip_image022

Cela a bien supprimé l’authentification gardé en mémoire.

Autre exemple d’authentification pour la création d’un item  (même principe):

clip_image024

Powershell: Acces aux variables entre Session locale et session distante.

Independemment de la portabilité des variable dans un script, un problème se pose lorsque vous souhaitez, dans un script, accéder des variable locales depuis des commandes executées sur une machine distante.

Exemple:

 

$vmmserver= »monserveurvmm.home.com »
$VmToStop= »c:\BackupAdmin\VMToStop.txt »

if (!(test-path $VmToStop))
{
write-host « le fichier des VM $VmToStop a eteindre introuvable. le script va s’arreter »
Exit
}
else
{
$VmToStop= Get-Content $VmToStop
foreach ($vm in $VmToStop)
{

        Invoke-Command -ComputerName $vmmserver -ScriptBlock {
        param($vm,$vmmserver)

        Add-PSSnapin microsoft.systemcenter.virtualmachinemanager
        $vmstatus= (get-vm -Name $vm -VMMServer $vmmserver | Select-Object -Property status)
        if ($vmstatus.status -eq « running »)
            {
            write-host « La VM $vm est démarré et va etre arretée »
            Shutdown-VM -VM $vm
            }
            elseif ($vmstatus.status -eq « PowerOff »)
            {
            write-host « La VM  $vm est déja arrétée »
            Exit
            }
        } -Argumentlist $vm,$vmmserver
}
}       

##################################

 

Dans ce script qui recherche dans un fichier “VMToStop.txt” une liste de machine virtuelles a arrêter, un bloc de commande est executé a distance (Invoke-Command -ComputerName $vmmserver -ScriptBlock { } ) sur un serveur scvmm. Comment faire en sorte que les commandes executées a distance connaissent les variables locales $vm et $vmmserver ?

param($vm,$vmmserver) va permettre de declarer une liste de variable dans le ScriptBlock

-Argumentlist $vm,$vmmserver va permettre de faire la liaison entre le contenu de param et les variables locales.

A noter que le nom des variables déclarées par param est arbitraire, mais il est nécéssaire que ces variables soit dans le meme ordre que celles de –Argumentlist .

EXCHANGE 2010 – Activer la console de performance ECP

La console Web ECP permet à l’utilisateur certaines actions.

Cette console “embarque” une fonction qui n’est pas visible par défaut : Console de performances.

Cette console permet de mesurer la performance depuis votre client Web et les services

de messageries .Elle pourra vous aider à réaliser certains diagnostics.

Pour activer cette console il faut apporter une modification au fichier web.config situé

dans le répertoire …..\Exchange Server\V14\ClientAccess\ecp

   <!– Set ShowPerformanceConsole to "true" to show ECP’s Perf Console: –>

          <add key="ShowPerformanceConsole" value="false" />

Changer la valeur ShowPerformanceConsole de false à true.

Redémarrer IIS (iisreset /noforce).

Lancer la console ECP : https:\\monserveur.exchange.fr\ecp

*****************                 Rappel : avant la modif:              **************************

clip_image002

***********************************************************************************************

Un nouveau menu est disponible:

clip_image002[5]

Cliquez sur “Console de performance”.

clip_image002[7]

A la première ouverture il y a de fortes chances de voir ces quatre premiers compteurs.

Selon les outils que vous utilisez dans la console ECP d’autres compteurs seront listés:

clip_image002[9]

Les données peuvent être exportées vers Excel en cliquant simplement sur “Copier”.

Bonne utilisation.