×

首页>讲师原创专区

教师图片

林峥嵘老师

8文章总数

32452总阅读数

查看Ta的文章>>

使用powershell实现文件夹

发布于:2017年09月01日 浏览:4146次 0

$ConfirmPreference="none"
$File=Import-Csv path.csv -Encoding Default 
$LogFile="sync_log.csv"  
$Table = @{"source"='';"destination"='';"datetime"='';"SHA_Resu1t"='';} 
$Pstable =New-object -TypeName psobject -Prop $Table 
$Pstable | select-Object source,destination,datetime,SHA_Resu1t | Export-csv $LogFile -Force -NoTypeInformation -Encoding UTF8

foreach ($item in $File)
    {
        $s=$item.source.ToString().tolower()+'\'
        $d=$item.destination.ToString().tolower()+'\'
        Get-ChildItem $item.source -Recurse | ForEach-Object -Process {
            $Spath=$_.FullName.ToString().tolower()
            $Dpath=$Spath.replace("$s","$d")
            $datetime=get-date
            If((Test-Path -Path $Dpath) -eq $true) 
            {
               if(((Get-ChildItem $Dpath).psiscontainer) -eq $false) 
               {
                
                if((Get-Item $Spath).LastWriteTimen -gt (Get-Item $Dpath).LastWriteTime)
                {
                 Copy-Item "$Spath" -Destination "$Dpath" -Force
                 $OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
                 $OutInfo
                 $WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
                 $WriteLog                                   
                }
                elseif ((Get-Item $Spath).LastWriteTimen -lt (Get-Item $Dpath).LastWriteTime)
                {
                 Copy-Item "$Dpath" -Destination "$Spath" -Force
                 $OutInfo=$Dpath.ToString()+','+$Spath.ToString()+','+$datetime.ToString() 
                 $OutInfo
                 $WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
                 $WriteLog                                   
                }
               } 
            }
            else
            {
              Copy-Item "$Spath" -Destination "$Dpath" -Force
              $OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
              $OutInfo
              $WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
              $WriteLog 
            }
        }
         Get-ChildItem $item.destination -Recurse | ForEach-Object -Process {
         $RDpath=$_.FullName.ToString().tolower()
         $RSpath=$RDpath.replace("$d","$s")
         $datetime=get-date  
         If((Test-Path -Path $RSpath) -eq $false) #对比destination 中的对象是否在source中存在
         {
            Copy-Item "$RDpath" -Destination "$RSpath" -Force
            $OutInfo=$RDpath.ToString()+','+$RSpath.ToString()+','+$datetime.ToString()
            $OutInfo
            $WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
            $WriteLog  
         }  
    }
    }

本周热文

推荐专题

专栏图标 专栏图标 专栏图标 专栏图标 专栏图标 专栏图标

PMI, PMP, Project Management Professional, CAPM, PgMP, PfMP, PMI-ACP, PMI-RMP, PMI-SP, PMI-PBA and PMBOK are registered marks of the Project Management Institute, Inc.

ITIL® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

PRINCE2® is a registered trade mark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.

Copyright © 2006-2019 东方瑞通(北京)咨询服务有限公司版权所有

京ICP备 13009094号 京公网安备 11010802014211号