Question
[Résolu] Interroger des clusters
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 1 mois #20603
par zaerazerazer
En cours de découverte du GraalPowershell !
Réponse de zaerazerazer sur le sujet Re:Interroger des clusters
Non malheuresement
je récupère uniquement le nom du cluster et pour le reste c'est vide !
En testant d'autres manières d'apellé l'info j'ai un message d'erreur qui me dit que :
Select-Object : La propriété « Partition » est introuvable.
Quand j'appelle comme ceci :
[code:1]
$freeSpace = ((Get-ClusterSharedVolume -Name $dataStoreName).SharedVolumeInfo | select -ExpandProperty Partition).FreeSpace
[/code:1]
Du coup le problème doit être liée à la session car je viens de tester en éxécutant le script directemment sur un hôte du cluster et la j'obtiens bien toutes les infos.<br><br>Message édité par: Tibo54, à: 6/08/15 11:16

En testant d'autres manières d'apellé l'info j'ai un message d'erreur qui me dit que :
Select-Object : La propriété « Partition » est introuvable.
Quand j'appelle comme ceci :
[code:1]
$freeSpace = ((Get-ClusterSharedVolume -Name $dataStoreName).SharedVolumeInfo | select -ExpandProperty Partition).FreeSpace
[/code:1]
Du coup le problème doit être liée à la session car je viens de tester en éxécutant le script directemment sur un hôte du cluster et la j'obtiens bien toutes les infos.<br><br>Message édité par: Tibo54, à: 6/08/15 11:16
En cours de découverte du GraalPowershell !
Connexion ou Créer un compte pour participer à la conversation.
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 1 mois #20604
par zaerazerazer
En cours de découverte du GraalPowershell !
Réponse de zaerazerazer sur le sujet Re:Interroger des clusters
Après c'est vrai que je n'est pas expliqué le but de mon script!
J'aimerais pouvoir tout les matin m'envoyer un mail qui récapitulerais touts mes disques en cluster voir leurs espace dispo. La difficulté est que j'ai des .vhd qui sont dynamique et donc il faudrais que je calcule l'espace dispo du disque en prennant en compte la taille réel du .vhd et non la place qu'il prend quand il n'est pas remplis entièrement.
Et je 'ai pa encore trouvé la solution miracle :/
une petite idée ?
Voilà deja une première approche mais étant en PSVersion 2.0 je dois importer le module HyperV de Codeplex DL ici -> pshyperv.codeplex.com/releases
[code:1]
Import-Module FailoverClusters
Import-Module \"C:\Program Files\Modules\Hyperv\Hyperv.psd1\"
$objs = @()
$NameClusters = Get-Cluster
foreach ($NameCluster in $NameClusters)
{
$HoteClusters = Get-ClusterNode -Cluster $NameCluster.name
foreach ($HoteCluster in $HoteClusters)
{
$HoteClusterName = $HoteCluster.name
$VMClusters = Get-VM -Server $HoteClusterName
foreach ($VMCluster in $VMClusters)
{
$VMClusternames = $VMCluster.VMElementName
foreach ($VMClustername in $VMClusternames)
{
$VMDisks = Get-VMDisk $VMClustername
foreach ($VMDisk in $VMDisks)
{
$DiskPath = $VMDisk.DiskPath
$DiskMaxSize = Get-VHDinfo $DiskPath | Select MaxInternalSize
echo \"Cluster : $NameCluster | Server : $HoteClusterName | Chemin Disque : $DiskPath | TailleMax Disque : $DiskMaxSize\"
}
}
}
}
}
[/code:1]
Et j'ai ce message d'erreur :
[code:1]
Get-WmiObject : Classe non valide
Au niveau de C:\Program Files\Modules\Hyperv\VM.ps1 : 73 Caractère : 26
+ Get-WmiObject <<<< -computername $Server -NameSpace $HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name \"VMElementName\" -Value \"Elemen
tName\" -PassThru
+ CategoryInfo : InvalidOperation: (:«») [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Get-VHDInfo : Impossible de valider l'argument sur le paramètre « VHDPaths ». L'argument est null ou vide. Indiquez un argument qui n'est pas null ou vide et réessayez.
Au niveau de C:\efzeefz\fzefefezf\efezfe\ScriptAnalyseDiskCluster.ps1 : 31 Caractère : 47
+ $DiskMaxSize = Get-VHDinfo <<<< $DiskPath | Select MaxInternalSize
+ CategoryInfo : InvalidData: (:«») [Get-VHDInfo], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Get-VHDInfo
Cluster : ClusterTEST | Server : hypervtest03 | Chemin Disque : | TailleMax Disque :
[/code:1]
Merci<br><br>Message édité par: Tibo54, à: 7/08/15 14:03
J'aimerais pouvoir tout les matin m'envoyer un mail qui récapitulerais touts mes disques en cluster voir leurs espace dispo. La difficulté est que j'ai des .vhd qui sont dynamique et donc il faudrais que je calcule l'espace dispo du disque en prennant en compte la taille réel du .vhd et non la place qu'il prend quand il n'est pas remplis entièrement.
Et je 'ai pa encore trouvé la solution miracle :/
une petite idée ?
Voilà deja une première approche mais étant en PSVersion 2.0 je dois importer le module HyperV de Codeplex DL ici -> pshyperv.codeplex.com/releases
[code:1]
Import-Module FailoverClusters
Import-Module \"C:\Program Files\Modules\Hyperv\Hyperv.psd1\"
$objs = @()
$NameClusters = Get-Cluster
foreach ($NameCluster in $NameClusters)
{
$HoteClusters = Get-ClusterNode -Cluster $NameCluster.name
foreach ($HoteCluster in $HoteClusters)
{
$HoteClusterName = $HoteCluster.name
$VMClusters = Get-VM -Server $HoteClusterName
foreach ($VMCluster in $VMClusters)
{
$VMClusternames = $VMCluster.VMElementName
foreach ($VMClustername in $VMClusternames)
{
$VMDisks = Get-VMDisk $VMClustername
foreach ($VMDisk in $VMDisks)
{
$DiskPath = $VMDisk.DiskPath
$DiskMaxSize = Get-VHDinfo $DiskPath | Select MaxInternalSize
echo \"Cluster : $NameCluster | Server : $HoteClusterName | Chemin Disque : $DiskPath | TailleMax Disque : $DiskMaxSize\"
}
}
}
}
}
[/code:1]
Et j'ai ce message d'erreur :
[code:1]
Get-WmiObject : Classe non valide
Au niveau de C:\Program Files\Modules\Hyperv\VM.ps1 : 73 Caractère : 26
+ Get-WmiObject <<<< -computername $Server -NameSpace $HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name \"VMElementName\" -Value \"Elemen
tName\" -PassThru
+ CategoryInfo : InvalidOperation: (:«») [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Get-VHDInfo : Impossible de valider l'argument sur le paramètre « VHDPaths ». L'argument est null ou vide. Indiquez un argument qui n'est pas null ou vide et réessayez.
Au niveau de C:\efzeefz\fzefefezf\efezfe\ScriptAnalyseDiskCluster.ps1 : 31 Caractère : 47
+ $DiskMaxSize = Get-VHDinfo <<<< $DiskPath | Select MaxInternalSize
+ CategoryInfo : InvalidData: (:«») [Get-VHDInfo], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Get-VHDInfo
Cluster : ClusterTEST | Server : hypervtest03 | Chemin Disque : | TailleMax Disque :
[/code:1]
Merci<br><br>Message édité par: Tibo54, à: 7/08/15 14:03
En cours de découverte du GraalPowershell !
Connexion ou Créer un compte pour participer à la conversation.
- zaerazerazer
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 8 ans 1 mois #20613
par zaerazerazer
En cours de découverte du GraalPowershell !
Réponse de zaerazerazer sur le sujet Re:Interroger des clusters
Voilà j'ai réussis à faire ce que je voulais voici le code pour ceux que ça intérresse :
[code:1]
Import-Module FailoverClusters
Import-Module \"C:\Program Files\Modules\Hyperv\Hyperv.psd1\"
$objs = @()
$NameClusters = Get-Cluster
$EspaceOccupe = 0
foreach ($NameCluster in $NameClusters)
{
$csvs = Get-ClusterSharedVolume
foreach ( $csv in $csvs )
{
$csvinfos = $csv | select -Property Name -ExpandProperty SharedVolumeInfo
foreach ( $csvinfo in $csvinfos )
{
$TotalSize = $csvinfo.Partition.Size
$Name = $NameCluster
$obj = New-Object PSObject -Property @{
Name = $Name
TotalSize = $TotalSize
}
$objs += $obj
}
}
$HoteClusters = Get-ClusterNode -Cluster $NameCluster.name
foreach ($HoteCluster in $HoteClusters)
{
$HoteClusterName = $HoteCluster.name
$VMClusters = Get-VM -Server $HoteClusterName
foreach ($VMCluster in $VMClusters)
{
$VMClusternames = $VMCluster.VMElementName
foreach ($VMClustername in $VMClusternames)
{
$VMDisks = Get-VMDisk $VMClustername
foreach ($VMDisk in $VMDisks)
{
$DiskPath = $VMDisk.DiskPath
if( $DiskPath -ne $null)
{
$InfosVHD = Get-VHDinfo $DiskPath
$DiskMaxSize = $InfosVHD.MaxInternalSize
echo \"Cluster : $NameCluster | Server : $HoteClusterName | Chemin Disque : $DiskPath | TailleMax Disque : $DiskMaxSize\"
$EspaceOccupe += $DiskMaxSize
}
}
}
}
}
}
$EspaceLibre = $TotalSize - $EspaceOccupe
$obj = New-Object PSObject -Property @{
EspaceOccupe = $EspaceOccupe
EspaceLibre = $EspaceLibre
}
$objs += $obj
$obj | ft -auto Name,@{ Label = \"TailleDuDisque(GB«»)\" ; Expression = { \"{0:N2}\" -f ($TotalSize/1024/1024/1024) } },@{ Label = \"EspaceLibre(GB«»)\" ; Expression = { \"{0:N2}\" -f ($EspaceLibre/1024/1024/1024) } },@{ Label = \"EspaceOccupe(GB«»)\" ; Expression = { \"{0:N2}\" -f ($EspaceOccupe/1024/1024/1024) } }
[/code:1]
Et j'ai un résultat de ce type la :
TailleDuDisque(GB) EspaceLibre(GB) EspaceOccupe(GB)
----
910,00 424,99 485,00<br><br>Message édité par: Tibo54, à: 11/08/15 09:43
[code:1]
Import-Module FailoverClusters
Import-Module \"C:\Program Files\Modules\Hyperv\Hyperv.psd1\"
$objs = @()
$NameClusters = Get-Cluster
$EspaceOccupe = 0
foreach ($NameCluster in $NameClusters)
{
$csvs = Get-ClusterSharedVolume
foreach ( $csv in $csvs )
{
$csvinfos = $csv | select -Property Name -ExpandProperty SharedVolumeInfo
foreach ( $csvinfo in $csvinfos )
{
$TotalSize = $csvinfo.Partition.Size
$Name = $NameCluster
$obj = New-Object PSObject -Property @{
Name = $Name
TotalSize = $TotalSize
}
$objs += $obj
}
}
$HoteClusters = Get-ClusterNode -Cluster $NameCluster.name
foreach ($HoteCluster in $HoteClusters)
{
$HoteClusterName = $HoteCluster.name
$VMClusters = Get-VM -Server $HoteClusterName
foreach ($VMCluster in $VMClusters)
{
$VMClusternames = $VMCluster.VMElementName
foreach ($VMClustername in $VMClusternames)
{
$VMDisks = Get-VMDisk $VMClustername
foreach ($VMDisk in $VMDisks)
{
$DiskPath = $VMDisk.DiskPath
if( $DiskPath -ne $null)
{
$InfosVHD = Get-VHDinfo $DiskPath
$DiskMaxSize = $InfosVHD.MaxInternalSize
echo \"Cluster : $NameCluster | Server : $HoteClusterName | Chemin Disque : $DiskPath | TailleMax Disque : $DiskMaxSize\"
$EspaceOccupe += $DiskMaxSize
}
}
}
}
}
}
$EspaceLibre = $TotalSize - $EspaceOccupe
$obj = New-Object PSObject -Property @{
EspaceOccupe = $EspaceOccupe
EspaceLibre = $EspaceLibre
}
$objs += $obj
$obj | ft -auto Name,@{ Label = \"TailleDuDisque(GB«»)\" ; Expression = { \"{0:N2}\" -f ($TotalSize/1024/1024/1024) } },@{ Label = \"EspaceLibre(GB«»)\" ; Expression = { \"{0:N2}\" -f ($EspaceLibre/1024/1024/1024) } },@{ Label = \"EspaceOccupe(GB«»)\" ; Expression = { \"{0:N2}\" -f ($EspaceOccupe/1024/1024/1024) } }
[/code:1]
Et j'ai un résultat de ce type la :
TailleDuDisque(GB) EspaceLibre(GB) EspaceOccupe(GB)
----
910,00 424,99 485,00<br><br>Message édité par: Tibo54, à: 11/08/15 09:43
En cours de découverte du GraalPowershell !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Interroger des clusters