2012-04-06 2 views
0

각기 다른 서버의 다양한 SQL 데이터베이스 (총 18 개)에서 NAS의 폴더 세트 (매일 .bak 백업 (서버 A -> C : \ Backups \ A \, 서버 ​​B -> C : \ Backups \ B \ 등). 복사가 성공했는지 확인하기 위해 매일 (매일) 각 폴더를 검사하는 PowerShell 스크립트가 필요합니다. 그 크기와 함께 복사 된 파일의 이름과 그렇지 않은 파일의 디렉토리 (즉, 하루의 .bak가 있어야하는 폴더)를 로그에 기록하고 싶습니다. 대상 폴더가 나열된 배열이 있습니다. 내가 지금까지 가지고있는 것을 복사했는데, '객체의 lastwritetime = todaysdate'를 확인하는 방법과 그것이 수행되는지 /하지 않으면 로그 하는지를 잘 모르겠습니다. 죄송합니다. 이것이 혼란 스럽다면 Powershell에서 일하는 첫 번째 주입니다. 어떤 통찰력이라도 대단히 감사하겠습니다.Powershell : 오늘의 백업 여부 확인

foreach ($folder in $array.destination) 
    {gci | sort-object lastwritetime -descending |select -first 1 
If 
    ($object lastwritetime.Date -eq (Get-Date).Date #this is wrong, but generally what I want to do 
     | Out-File "C:\Script\.log" | ft * -autosize) 
Else 
    (
    **WRITE DESTINATION OF TODAY'S MISSING .bak TO LOG*** 
) 
    } 

답변

0

포맷 할 필요가 없습니다. 그렇게 할 경우 출력 파일로 파이핑해야합니다. 이 얻을 수 있습니다 경우에 당신이 올바른 방향으로 시작 참조 :

$file=dir -path c:\scripts\ | sort LastWriteTime | select -last 1 

if ($file.LastWriteTime.ToShortDateString() -eq (get-date).ToShortDatesTring()) { 
#file dates match 
$file | Out-File Log.txt -append 
} 
else { 
#dates do not match 
Write "destination missing backup log" 
} 
0

이 스크립트 DB를에 확인하고 플래그를 모든 백업이 실패합니다. Full, Diff 및 Log 백업을 확인합니다.

#Backup Check Version 1.0. 
#List Server Name from 
$ServerList = Get-Content "D:\PSScripts\BackupScript\ServerList.txt" 
#Output file Location : Put is IIS if you want to publish 
$OutputFile = "c:\IIS\BackupReport.htm" 
$HTMLHDR="" 
$BODYRED ="" 
$BODYGRN="" 
$now=get-date 
$FOOTER="" 

$HTMLHDR += '<style type="text/css"> 
    #Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:700;border-collapse:collapse;} 
    #Header td, #Header th {font-size:12px;border:1px solid #98bf21;padding:3px 7px 2px 7px;} 
    #Header th {font-size:10px;text-align:center;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#fff;} 
    #Header tr.alt td {color:#000;background-color:#EAF2D3;} 
    </Style>' 

$HTMLHDR += "<HTML><HEAD><TITLE>Backup Page</TITLE></HEAD><BODY> 
     <p align=Center><font size=4 face=Bodoni MT color=#003333><B>Backup Report :Location</B></font></p> 
     <p align=Center><font face=Bodoni MT color=Green size=3>Last Pulled : $now IST</font></P> 
     <center><Table border=1 cellpadding=0 cellspacing=0 width=900 id=Header aling ='center'> 
     <TR> 
      <TH><B>Server Name</B></TH> 
      <TH><B>Database Name</B></TH> 
      <TH><B>RecoveryModel</B></TD> 
      <TH><B>Last Full Backup Date</B></TH> 
      <TH><B>Last Differential Backup Date</B></TH> 
      <TH><B>Last Log Backup Date</B></TH> 
     </TR>" 
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 

## Function if you need to skip or include any specific DB 
function CheckDBName ($DBName){ 
$NameFlage ="true" 
    if($DBName -like "*DBName*") {$NameFlage ="false"} 

    return $NameFlage 
} 

##Get Backup details 
ForEach ($ServerName in $ServerList) 
{ 
    if($ServerName -ne ""){ 
    $DT = Get-WmiObject -Class Win32_LocalTime -ComputerName $servername 
    $DateTime = (Get-Date -Day $DT.Day -Month $DT.Month -Year $DT.Year -Minute $DT.Minute -Hour $DT.Hour -Second $DT.Second) 

    $SQLServer = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $ServerName 
    Foreach($Database in $SQLServer.Databases) 
     { 
     $FLAGE="false" 
     $color="Green" 
     $model=$($Database.RecoveryModel) 
     $DBName=$Database.Name 
     $FBKP=($DateTime-$Database.LastBackupDate).days 
     $DBKP=($DateTime-$Database.LastDifferentialBackupDate).days 
     $LBKP=($DateTime-$Database.LastLogBackupDate).hours 
     $WDay=$DateTime.DayOfWeek 
      if($(CheckDBName($Database.name)) -eq "true") { 
          $tmp= "<tr><TD>$($Servername)</TD><TD>$($Database.Name)</TD><TD>$model</TD>"    
       if($FBKP -ge 7){ 
         $color="RED" 
         $FLAGE="true" 
         } 
       if($WDay -like "mon*"){ 
         if($FBKP -ge 4){ 
         $color="RED" 
         $FLAGE="true" 
         }} 
          $tmp+="<TD bgcolor='$color'>$($Database.LastBackupDate)</TD> " 
          $color="Green" 
       if($DBKP -ge 1 -AND $FBKP -gt 1){ 

        $color="RED" 
        $FLAGE="true" 
        } 

          $tmp +="<TD bgcolor='$color'>$($Database.LastDifferentialBackupDate)</TD>" 
          $color="Green" 
       if($Model -like "*Full*"){ 
       if($LBKP -ge 2){ 
        $color="RED" 
        $FLAGE="true" 
       } } 
          $tmp +="<TD bgcolor='$color'>$($Database.LastLogBackupDate)</TD> </TR>" 
          $color="Green" 

        if($FLAGE -eq "TRUE"){$BODYRED +=$tmp} 
        else {$BODYGRN+=$tmp} 
       } 
     } 
    } 
    } 
$FOOTER+= "</Table></BODY></HTML>" 
$FILE=$HTMLHDR+$BODYRED+$BODYGRN+$FOOTER 
$FILE | Out-File $OutputFile 

Exit 

###########END#########################