<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.blaxeen.com/index.php?action=history&amp;feed=atom&amp;title=HyperV_verification_snapshot</id>
	<title>HyperV verification snapshot - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blaxeen.com/index.php?action=history&amp;feed=atom&amp;title=HyperV_verification_snapshot"/>
	<link rel="alternate" type="text/html" href="https://wiki.blaxeen.com/index.php?title=HyperV_verification_snapshot&amp;action=history"/>
	<updated>2026-04-18T12:26:37Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.blaxeen.com/index.php?title=HyperV_verification_snapshot&amp;diff=4352&amp;oldid=prev</id>
		<title>127.0.0.1 : Page créée avec « &lt;pre&gt; &lt;# .SYNOPSIS Envoie le nombre de snapshots dans le test FS et fait divers test. #&gt;  # $action = New-ScheduledTaskAction -Execute &#039;Powershell.exe&#039; -Argument &#039;-NoProfi... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.blaxeen.com/index.php?title=HyperV_verification_snapshot&amp;diff=4352&amp;oldid=prev"/>
		<updated>2020-07-02T11:20:32Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;pre&amp;gt; &amp;lt;# .SYNOPSIS Envoie le nombre de snapshots dans le test FS et fait divers test. #&amp;gt;  # $action = New-ScheduledTaskAction -Execute &amp;#039;Powershell.exe&amp;#039; -Argument &amp;#039;-NoProfi... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;#&lt;br /&gt;
.SYNOPSIS&lt;br /&gt;
Envoie le nombre de snapshots dans le test FS et fait divers test.&lt;br /&gt;
#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# $action = New-ScheduledTaskAction -Execute &amp;#039;Powershell.exe&amp;#039; -Argument &amp;#039;-NoProfile -WindowStyle Hidden -File &amp;quot;C:\Agarik\Scripts\supervision-hv.ps1&amp;quot;&amp;#039;&lt;br /&gt;
# $trigger =  New-ScheduledTaskTrigger -Once -At &amp;quot;12:00&amp;quot; -RepetitionInterval (New-TimeSpan -Minutes 15)&lt;br /&gt;
# $principal = New-ScheduledTaskPrincipal -UserId &amp;quot;$([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)&amp;quot; -RunLevel Highest -LogonType S4U&lt;br /&gt;
# Register-ScheduledTask  -Action $action -Trigger $trigger -TaskName &amp;quot;Supervision HV&amp;quot; -Description &amp;quot;Supervision HV&amp;quot; -Principal $principal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Nom de supervision et service&lt;br /&gt;
$global:server=[System.Net.Dns]::GetHostByName(($env:computerName)).Hostname&lt;br /&gt;
$global:service=&amp;quot;fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Correspondance volume &amp;lt;--&amp;gt; hv&lt;br /&gt;
$VolumeHV = @{&lt;br /&gt;
    Volume1 = &amp;#039;hv01&amp;#039;&lt;br /&gt;
    Volume2 = &amp;#039;hv02&amp;#039;&lt;br /&gt;
    Volume3 = &amp;#039;hv03&amp;#039;&lt;br /&gt;
    Volume4 = &amp;#039;hv04&amp;#039;&lt;br /&gt;
    Volume5 = &amp;#039;hv05&amp;#039;&lt;br /&gt;
    Volume6 = &amp;#039;hv06&amp;#039;&lt;br /&gt;
    Volume7 = &amp;#039;hv07&amp;#039;&lt;br /&gt;
    Volume8 = &amp;#039;hv08&amp;#039;&lt;br /&gt;
    Volume9 = &amp;#039;hv09&amp;#039;&lt;br /&gt;
    Volume10 = &amp;#039;hv10&amp;#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Liste des VMs dont on ignore les snapshots&lt;br /&gt;
$ignoreSnapshotVMs=@(&lt;br /&gt;
    &amp;quot;exemple1&amp;quot;,&lt;br /&gt;
    &amp;quot;exemple2&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
# Age du snapshot avant Erreur (en heure)&lt;br /&gt;
$CritSnapshotThreshold = 24&lt;br /&gt;
&lt;br /&gt;
# Debut script&lt;br /&gt;
$ErrorActionPreference = &amp;quot;Stop&amp;quot;&lt;br /&gt;
Import-Module &amp;quot;$PSScriptRoot\agarik.psm1&amp;quot; -DisableNameChecking&lt;br /&gt;
&lt;br /&gt;
If(([Environment]::OSVersion.Version -lt (new-object &amp;#039;Version&amp;#039; 6,2)) -And (Test-Path &amp;quot;$env:programfiles\modules\Hyperv&amp;quot;)){&lt;br /&gt;
	Import-Module &amp;quot;$env:programfiles\modules\HyperV&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Detection Snapshots&lt;br /&gt;
## Remonte une erreur si un snapshot datant de plus de XXX heures est trouvĂ©&lt;br /&gt;
&lt;br /&gt;
$vmWithSnapshot=(Get-VMSnapshot *)&lt;br /&gt;
Append-Supervision(&amp;quot;Snapshots presents :&amp;quot;)&lt;br /&gt;
Foreach ($vm in $vmWithSnapshot) {&lt;br /&gt;
    if ($ignoreSnapshotVMs -contains $vm.VMName) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;clear {0,-40} - Date : {1} - ignore&amp;quot; -f $vm.VMName, ($vm.CreationTime).ToString(&amp;#039;yyyy-MM-dd HH:mm:ss&amp;#039;))&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        if ($vm.CreationTime -lt (get-date).AddHours(-1 * $CritSnapshotThreshold)) {&lt;br /&gt;
            Append-Supervision(&amp;quot; - &amp;amp;red {0,-40} - Date : {1} - plus de {2} heures&amp;quot; -f $vm.VMName, ($vm.CreationTime).ToString(&amp;#039;yyyy-MM-dd HH:mm:ss&amp;#039;), $CritSnapshotThreshold)&lt;br /&gt;
            Raise-Error&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            Append-Supervision(&amp;quot; - &amp;amp;yellow {0,-40} - Date : {1}&amp;quot; -f $vm.VMName, ($vm.CreationTime).ToString(&amp;#039;yyyy-MM-dd HH:mm:ss&amp;#039;))&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if ($((Get-VMSnapshot * | measure).count) -eq 0) {&lt;br /&gt;
    Append-Supervision(&amp;quot; aucun snapshot&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Volume clusters&lt;br /&gt;
## Remonte une erreur lorsqu&amp;#039;un volume de Cluster n&amp;#039;est pas sur le bon HV&lt;br /&gt;
&lt;br /&gt;
Append-Supervision(&amp;quot;`n`n Verification Volumes de cluster :&amp;quot;)&lt;br /&gt;
foreach ($volume in Get-ClusterSharedVolume) {&lt;br /&gt;
    $correctHV=$VolumeHV[$volume.Name]&lt;br /&gt;
    if (!$correctHV) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;yellow $($volume.Name) non declare dans le script&amp;quot;)&lt;br /&gt;
        Raise-Warning&lt;br /&gt;
    }&lt;br /&gt;
    elseif ($volume.OwnerNode -ne $correctHV) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;yellow $($volume.Name) n&amp;#039;est pas sur le bon hv : $($volume.OwnerNode) != $correctHV&amp;quot;)&lt;br /&gt;
        Raise-Warning&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;green $($volume.Name) : $correctHV&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Detection emplacements fichiers de VM&lt;br /&gt;
## Remonte une erreur quand un emplacement de fichier de VM n&amp;#039;est pas dans un CSV&lt;br /&gt;
&lt;br /&gt;
Append-Supervision(&amp;quot;`n`n Verification Emplacements fichiers :&amp;quot;)&lt;br /&gt;
$count=0&lt;br /&gt;
foreach ($vm in Get-VM) {&lt;br /&gt;
    if ($vm.SmartPagingFilePath -inotmatch &amp;#039;C:\\ClusterStorage\\*&amp;#039;) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;yellow $($vm.VMname) : SmartPagingFilePath - $($vm.SmartPagingFilePath)&amp;quot;)&lt;br /&gt;
        Raise-Warning&lt;br /&gt;
       $count++&lt;br /&gt;
    }&lt;br /&gt;
    if ($vm.ConfigurationLocation -inotmatch &amp;#039;C:\\ClusterStorage\\*&amp;#039;) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;yellow $($vm.VMname) : ConfigurationLocation - $($vm.ConfigurationLocation)&amp;quot;)&lt;br /&gt;
        Raise-Warning&lt;br /&gt;
       $count++&lt;br /&gt;
    }&lt;br /&gt;
    if ($vm.SnapshotFileLocation -inotmatch &amp;#039;C:\\ClusterStorage\\*&amp;#039;) {&lt;br /&gt;
        Append-Supervision(&amp;quot; - &amp;amp;yellow $($vm.VMname) : SnapshotFileLocation - $($vm.SnapshotFileLocation)&amp;quot;)&lt;br /&gt;
        Raise-Warning&lt;br /&gt;
       $count++&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if ($count -eq 0) {&lt;br /&gt;
    Append-Supervision(&amp;quot;  Fichiers OK&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    Raise-Warning&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Detection lecteur DVD avec ISO locale&lt;br /&gt;
## Remonte une erreur lorsqu&amp;#039;un DVD n&amp;#039;est pas sur un volume de cluster&lt;br /&gt;
&lt;br /&gt;
Append-Supervision(&amp;quot;`n`n Verification Emplacements ISO DVD :&amp;quot;)&lt;br /&gt;
$count=0&lt;br /&gt;
foreach ($vm in Get-VM) {&lt;br /&gt;
    $DVDs=$vm | Get-VMDvdDrive&lt;br /&gt;
    foreach ($dvd in $DVDs) {&lt;br /&gt;
        if ($dvd.Path -and ($dvd.Path -inotmatch &amp;#039;C:\\ClusterStorage\\*&amp;#039;)) {&lt;br /&gt;
            Append-Supervision(&amp;quot; - &amp;amp;yellow {0} : Le DVD {1} n&amp;#039;est pas dans un Volume de Cluster&amp;quot; -f $vm.VMName,$dvd.Path)&lt;br /&gt;
            Raise-Warning&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if ($count -eq 0) {&lt;br /&gt;
    Append-Supervision(&amp;quot;  DVD OK&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    Raise-Warning&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Send-Supervision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Script]]&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>