PowerShell实现的文件同步脚本分享


#分别定义源、目标文件夹,注意大小写敏感
$folder_a_path = "D:a"
$folder_b_path = "D:b"
#遍历源文件夹下所有文件
$folders_a = gci $folder_a_path -Recurse
foreach ($folder_a in $folders_a)
  {
  #通过替换的方式,取目标文件的全路径名称
  $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) 
  #判断目标文件是否存在,如果存在则先判断新旧
  If (test-path $b)
    {
     #判断目标是否为目录,如果是目录则跳过,如果不跳过,则会创建一级空目录
     If (!((gi $b).PSIsContainer))
      {
       #判断目标文件、源文件的新旧情况,如果目标已存在文件的修改时间早于源文件,则重新拷贝覆盖
       If ((gci $b).lastwritetime -lt $folder_a.lastwritetime)
        {
         copy-item $folder_a.fullname $b -force
        }
      }
    
    }
  #如果目标文件不存在,则直接拷贝
  Else
    {
     copy-item $folder_a.fullname $b
    }
    
    }



Powershell实现监测服务器连通状态
工作中可能会遇到有几台托管的服务器,比如数据库,一旦网络中断就会影响到数据采集。为此你可以使用下面脚本,它用计划任务每小时执行一次,

PowerShell中终止管道的方法
如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间。下面的例子会从Windows文件夹下

PowerShel程序执行完后删除脚本自身的方法
当脚本执行完成后,可以删除自身#删除脚本自身remove-item$MyInvocation.MyCommand.Path-force