Powershell - Get IniFile and compare date - script

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
param($date = (Get-Date))

function Get-IniFile
{  
    param(  
        [parameter(Mandatory = $true)] [string] $filePath  
    )  
    
    $anonymous = "NoSection"
 
    $ini = @{}  
    switch -regex -file $filePath  
    {  
        "^\[(.+)\]$" # Section  
        {  
            $section = $matches[1]  
            $ini[$section] = @{}  
            $CommentCount = 0  
        }  

        "^(;.*)$" # Comment  
        {  
            if (!($section))  
            {  
                $section = $anonymous  
                $ini[$section] = @{}  
            }  
            $value = $matches[1]  
            $CommentCount = $CommentCount + 1  
            $name = "Comment" + $CommentCount  
            $ini[$section][$name] = $value  
        }   

        "(.+?)\s*=\s*(.*)" # Key  
        {  
            if (!($section))  
            {  
                $section = $anonymous  
                $ini[$section] = @{}  
            }  
            $name,$value = $matches[1..2]  
            $ini[$section][$name] = $value  
        }  
    }  

    return $ini  
}  

$iniFile = Get-IniFile "$Env:USERPROFILE\AppData\Roaming\info.ini"
$addIniFile = Get-IniFile "C:\info\additional_info.ini"
$language = $iniFile.General.language
$calidateIni = $addIniFile.NoSection.CalibrationDate


Add-Type -AssemblyName System.Windows.Forms

$calidate = [Datetime]::ParseExact($calidateIni, 'dd MMM yyyy', [CultureInfo]'en-us')
            
#' '
#'This is in the additional info.txt = ' + $calidate.AddDays(365)
#'This is the date now               = ' + $date
#' '

if ($calidate -as [DateTime])  {
    if ($date -ge $calidate.AddDays(365)) {
        #'Date now is bigger than calidate'
        #$language
        if ($language -eq "de")
        {
            #echo $language    
            [System.Windows.Forms.MessageBox]::Show("Service fällig.","Info",0)
        }
        elseif ($language -eq "en")
        {
            [System.Windows.Forms.MessageBox]::Show("Service due.","Info",0)
        }
        elseif ($language -eq "fr")
        {
            [System.Windows.Forms.MessageBox]::Show("Service dû","Info",0)
        }
        elseif ($language -eq "ja")
        {
            [System.Windows.Forms.MessageBox]::Show("校正有効期限が失効しました","Info",0)
        }
                    
    } elseif ($date -ge $calidate.AddDays(335)) {
        #'Date now is in 30 days or less than calidate'
        $diffdate = New-TimeSpan -Start $date -End $calidate.AddDays(365)
        #'Calidate + 365                     = ' + $calidate.AddDays(365)
        #'This is the date now               = ' + $date
        #"Service fällig in                  = " + $diffdate.Days + " Tagen"

        if ($language -eq "de")
        {
            [System.Windows.Forms.MessageBox]::Show("Service fällig in " + $diffdate.Days + " Tagen","Info",0)
        }
        elseif ($language -eq "en")
        {
            [System.Windows.Forms.MessageBox]::Show("Service due in " + $diffdate.Days + " days","Info",0)
        }
        elseif ($language -eq "fr")
        {
            [System.Windows.Forms.MessageBox]::Show("Prochain service dans " + $diffdate.Days + " jour(s).","Info",0)
        }
        elseif ($language -eq "ja")
        {
            [System.Windows.Forms.MessageBox]::Show("校正有効期限失効まであと " + $diffdate.Days + " 日","Info",0)
        }
                
    } else
    {
        #'no'
        #[System.Windows.Forms.MessageBox]::Show("Calibration is ok","Info",0)
        #[string]$linesplit[1]
        #$date

    }
}

Keine Kommentare:

Kommentar veröffentlichen

Datei in einer windows.wim image ändern

 Um Dateien in einer Datei.wim zu ändern, und zwar nicht im 1. Index sondern 2. öffnet man Powershell (ich habs jetzt im admin Modus gestart...