Powershell 常用方法的记录
一、如何获取最新的文件
Get-Item "C:\powershell_test\*.xlsx" | sort LastWriteTime | select -last 1
上面命令中的sort LastWriteTime表示对C:\powershell_test\*.xlsx路径下的所有*.xlsx文件以最新写入时间进行升序排序,select -last 1表示选取排序后最后一个文件。如果需要降序排序,可以在sort LastWriteTime后面加上“-Descending”参数,如下所示:
Get-Item "C:\powershell_test\*.xlsx" | sort LastWriteTime -Descending
二、获取字符串中间几位的值
假设有一个变量$x, 它的值为“string”,我想获取中间的“rin”这三个字符。则运行如下代码
1 $x = "string" 2 $x.Substring(2,3)
$x.Substring(x,y)中的x代表想要从第几个位置开始获取值(x默认从0开始计数)。y代表要取字符串内的几个值。结果如下图所示

假设需要截取字符串的后3位字符,则可参考如下代码
1 $a = "string10230" 2 $str_length = $a.Length 3 $b = $a.substring($str_length -3)
获取字符串内的除倒数第六位字符的全部字符。
$x = "abcdefghi" $a = $x.Length() $b = $x.Substring(0,$a-6) + $x.Substring($a-5,5)
三、获取了一个日期的字符串,然后需要对这个日期加天数
1 $date = "2020/1/31" 2 $a = [datetime]$date 3 $b =[string]([datetime]$a.AddDays(1)
上面的代码是在获取了一个日期字符串之后对这个字符串加一天的操作。
四、获取2小时以上没有更新过内容的文件名
1 $log_files = (Get-Item "D:\powershell代码库\*.ps1" |where {$_.LastWriteTime -le (get-date).addHours(-2) -and $_ -is [System.IO.FileInfo]}).name
五、顺序删除文本文件的行数据
如下在D盘根目录下建立一个12行数据的文本,名字是test.txt。判断如果新增数据达到了12行,需要删除头三行数据

1 $file_list = Get-Content "D:\test.txt" 2 $count = $file_list.count 3 if($count -eq 12) 4 { 5 for($i = 0; $i -le 2; $i++) 6 { 7 $a = Get-Content "D:\test.txt"| where{$_-ne $file_list[$i]} 8 $a|Out-File "D:\test.txt" 9 10 } 11 }
六、更改时区
下面这段代码是将美国中部时间转换为中国标准时间。
[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(“2019/12/30 19:30:56", 'Central Standard Time','China Standard Time')
浙公网安备 33010602011771号