Author Posts

December 21, 2017 at 12:26 pm

I am new to PowerShell and stuck on how to complete the next step in my script. I realise it probably inst the best way to do this but its what i came up with. The scenario is that i need to check that our backups are creating a weekly archive, i have created the below and happy for suggestions on a better way to do it but not what my question is. I want to know if there is a way to have an if statement for all the other If/Else statements in the script. To expand on this is want to have an if statement so that is the other if/else statements comes back as archives are ok then it just outputs one "archives are ok" message rather than the 4 it currently outputs. Also if one fails it just tells you which has failed. Any help would be appreciated TIA Leon.

internet = (Get-Item "THEACTUALPATH").LastWriteTime
$a3 = (Get-Item "THEACTUALPATH").LastWriteTime
$cn3 = (Get-Item "THEACTUALPATH").LastWriteTime
$management = (Get-Item "THEACTUALPATH").LastWriteTime
$date = {
(Get-Date).Date;
(Get-Date).AddDays(+1);
(Get-Date).AddDays(+2);
(Get-Date).AddDays(+3);
(Get-Date).AddDays(+4);
(Get-Date).AddDays(+5);
(Get-Date).AddDays(+6)
}

if ($internet = $date)
{ "Internet servers archives ok"}
Else
{ "Internet servers archive failed"}

if ($n3 = $date)
{ "N3 Servers archives ok"}
Else
{ "N3 Server archive failed"}

if ($cn3 = $date)
{ "CN3 Servers archives ok"}
Else
{ "CN3 Servers archive failed"}

if ($management = $date)
{ "Management Servers archives ok"}
Else
{ "Management Servers archive failed"}

December 21, 2017 at 1:39 pm

break your code into regions for easier readability

#region Input
$MyFileList = @(
    '.\00000006.txt'
    '\\10.0.0.11\e$\Install\Scripts\AD DS Deployment.txt'
    'C:\Program Files\Common Files\microsoft shared\ClickToRun\ApiClient.dll'
)
$AcceptableDays = 7 # This is how far back a file lastwritetime can be to be considered OK, in days
#endregion

#region Process
$MyFileList | foreach {
    $FileInfo = Get-Item -Path $PSItem
    $FileAgeDays = (New-TimeSpan -Start $FileInfo.LastWriteTime -End (Get-Date)).TotalDays
    if ($FileAgeDays -le $AcceptableDays) {
        "File ($PSItem) backup OK ($([Math]::Round($FileAgeDays,1))) days"
    } else {
        "File ($PSItem) backup failed ($([Math]::Round($FileAgeDays,1))) days"
    }
}
#endregion

December 21, 2017 at 2:39 pm

Thanks alot Sam, your script also let me work out the answer to my main question on how to change the output to one line saying archives ok rather than several lines 🙂