Mai 282014
 

Code :

$ListVM=get-vm | Sort-Object -Property Host
$ListHOST=get-vmhost

$viewSI = Get-View ‘ServiceInstance’
$viewVmProvChecker = Get-View $viewSI.Content.VmProvisioningChecker

$Resultat = $ListVM | ForEach-Object {
$obj=New-Object PSObject
$myVM=$_
$obj | add-Member Noteproperty -name Name -value $myVM.name
$obj | add-Member Noteproperty -name CurrentHost -value $myVM.host
$ListHOST | ForEach-Object {
$myHost=$_
$resultCheck=$viewVmProvChecker.QueryVMotionCompatibilityEx(($myVM).Id, ($myHost).Id)
$nbErreur=($resultCheck[0].Error | measure-object | select -Property count).count
write-host « $myVM vers $myHost : $nbErreur » -foregroundcolor blue
$obj | add-Member Noteproperty -name ($myHost.name) -value ($nbErreur)
}
$obj
}
$Resultat | out-gridview

Ca donne un chouette tableau. o? le chiffre correspond au nombre de problemes rencontr?s pour le vMotion.
Pour connaitre la cause d’un echec :


function get-vmotionProblems{
Param([string]$vmName, [string]$vmHost)
$viewSI = Get-View 'ServiceInstance'
$viewVmProvChecker = Get-View $viewSI.Content.VmProvisioningChecker
$resultCheck=$viewVmProvChecker.QueryVMotionCompatibilityEx((Get-VM -name $vmName).Id, (get-vmhost -name $vmhost).Id)
($resultCheck[0].error)| foreach { $_.LocalizedMessage }
}

Qu’on utilise comme ceci :

get-vmotionProblems -vmName MA_VM01 -vmHost MON_ESX02

Mai 082014
 

import-module activedirectory

$Application= »
$sgroup= »

Import-Csv c:\temp\source.csv -Delimiter ‘;’ | where-object { $_.’Create DL’ -eq ‘X’ } | Sort-Object DL_,AD | select-object DL_,AD -unique | foreach {
if ($_.DL_ -eq $Application) {
$sgroup+= »(MemberOfGroup -eq ‘ »+(Get-ADGroup $_.AD | Select-Object -ExpandProperty DistinguishedName)+ »‘) -or  »
} else {
if ($Application -ne  » ) {
$sgroup=$sgroup.Substring(0,$sgroup.Length-4)
Remove-DynamicDistributionGroup « $Application » -Confirm:$false
$a= »New-DynamicDistributionGroup ‘$Application’ -Alias ‘$Application’ -OrganizationalUnit ‘OU=Distribution Lists,OU=Groups,OU=Users and groups,DC=MonDomaine,DC=local’ -RecipientFilter {(RecipientType -eq ‘UserMailbox’) -and ( ($sgroup)) }  »
invoke-expression $a

}
$Application=$_.DL_
$sgroup= »(MemberOfGroup -eq ‘ »+(Get-ADGroup $_.AD | Select-Object -ExpandProperty DistinguishedName)+ »‘) -or  »
}
}

if ($_.DL_ -ne $Application) {
$sgroup=$sgroup.Substring(0,$sgroup.Length-4)
Remove-DynamicDistributionGroup « $Application » -Confirm:$false
$a= »New-DynamicDistributionGroup ‘$Application’ -Alias ‘$Application’ -OrganizationalUnit ‘OU=Distribution Lists,OU=Groups,OU=Users and groups,DC=MonDomaine,DC=local’ -RecipientFilter {(RecipientType -eq ‘UserMailbox’) -and ( ($sgroup)) }  »
invoke-expression $a

}

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

$MyGroup = Get-DynamicDistributionGroup -id MA_DDL
Get-Recipient -RecipientPreviewFilter $MyGroup.RecipientFilter

Nov 102013
 

Ouvrez une console PowerShell et indiquez ce code :

Set-Alias ngen @(
dir (join-path ${env:\windir} "Microsoft.NET\Framework") ngen.exe -recurse |
sort -descending lastwritetime
)[0].fullName
[appdomain]::currentdomain.getassemblies() | %{ngen $_.location}

Et PAF, ca fait des chocapics, ca fonctionne !