• PowerShell2.0之桌面计算机维护(一)监控磁盘空间


    随着时间的增长,系统中的可用空间会越来越少。系统管理员需要清理磁盘,前提是了解系统磁盘空间,为此需要追踪一段时间内的磁盘空间的使用情况。创建名为“QueryOldFiles.ps1”的脚本连接到特定文件夹,并为其中所有超过30天未访问过的文件生成列表,在获得过期文件后可以根据实际情况处理。该脚本的代码如下:

    function FunWithLine ($strIN)

    {

    $num = $strIN.length

    for($i=1 ; $i -le $num ; $i++)

    { $funline = $funline + "=" }

    Write-Host -ForegroundColor yellow $strIN

    Write-Host -ForegroundColor darkYellow $funline

    }

    $folder = "c:\Windows"

    $date = Get-Date

    $limit = 30

    Get-ChildItem -Path $folder -force |

    foreach-object `

    {

    $newDate=($_.LastAccessTime).adddays($limit)

    $limitDate = New-TimeSpan -start $date -end $newDate

    if ($limitDate -le 0)

    {

    $xfiles += @{ $_.name = $_.lastAccessTime }

    }

    }

    Write-Host "There are $($xfiles.count) files from $folder greater than $limit days old."

    FunWithLine("The expired files are listed below:")

    $xfiles

    其中首先定义了FunWithLine函数获得传递给函数的字符串的长度,并使用Write-Host cmdlet创建用黄色显示带下画线的字符。然后初始化3个变量,其中是$folder保存要检查过期文件的文件夹的路径;$data保存当前日期的datetime(日期时间)对象。当前日期可以通过Get-Date cmdlet获取,$limit变量值用于判断允许文件存在的最长寿命,可以据此决定是否需要将其报告为过期文件。

    在初始化3个变量之后使用Get-Children cmdlet获得要检查的文件列表,将$folder变量中包括的字符串提供给Get-Children cmdlet的-path参数。然后使用-force参数返回隐藏文件,并将生成的fileinfo对象采用管道传递给ForEach-Object cmdlet。

    在ForEach-Object代码块中创建了新的datetime对象并将其保存在$newDate变量中,为了在文件现有最后访问时间点的基础上增加天数$limit,使用了addDays()方法。datetime对象通过查询管道中当前fileinfo对象的LastAccessTime属性获得。

    使用New-TimeSpan cmdlet创建代表文件的有效存活时间段,其中该对象为当前时间$date变量提供-start参数。将$newDate变量提供给-end参数,表示文件最后访问日期要求的过期时间$limit,最后在$limitdate变量中保存获得的timespan对象。当$limitdate值小于等于0时,则将当前对象输出给$xfiles变量,表示文件的最后访问日期已经超过了$limit变量中指定的过期时间。图1所示即此脚本在Windows文件夹中的执行结果,需要提示的是执行此脚本会因为Windows文件夹中文件的过期时间不同而显示不同的结果,但其原理一致。

    image

    图1 执行结果

    作者: 付海军
    出处:http://fuhj02.cnblogs.com
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
    个人网站: http://txj.shell.tor.hu/

  • 相关阅读:
    docker 构建带健康检查的redis镜像
    HP服务器 开启ILO
    [转]如何取得当前正在执行的shell脚本的绝对路径?
    解决方案:centos运行shell脚本时报“$' ': 未找到命令”
    Js控制滚动条
    json_decode时含有中文是解码问题(json_decode返回为null)
    Phaser开源2d引擎 html5游戏框架中文简介
    js 开启video全屏模式
    修改mysql用户名密码 和 PHPmysqlAdmin对应密码修改
    用javascript判断一个html元素是否存在的五种方法:
  • 原文地址:https://www.cnblogs.com/fuhj02/p/1929318.html
Copyright © 2020-2023  润新知