powershell学习 PowerShell 调试器 PowerShell 与操作系统版本 PowerShell 比较运算符 PowerShell中命令的返回 PowerShell 数组遍历 PowerShell 注释 PowerShell 读取文件并返回以行为数组元素的数组 PowerShell 查找数组中最大最小值 PowerShell创建文件文件夹 PowerShell无声强行删除文件夹以及其下的子项 PowerShell创建windows任务计划 PowerShell逻辑运算 Powershell 对象判空 PowerShell 拷贝

powershell学习
PowerShell 调试器
PowerShell 与操作系统版本
PowerShell 比较运算符
PowerShell中命令的返回
PowerShell 数组遍历
PowerShell 注释
PowerShell 读取文件并返回以行为数组元素的数组
PowerShell 查找数组中最大最小值
PowerShell创建文件文件夹
PowerShell无声强行删除文件夹以及其下的子项
PowerShell创建windows任务计划
PowerShell逻辑运算
Powershell 对象判空
PowerShell 拷贝

在开始运行处,输入powershell ISE回车即可

PowerShell 与操作系统版本

powershell在windows server 2008上自带,但最好在版本号为6.0.7600上使用,6.0.6001版本的server 2008自带的powershell缺少很多常用的功能

PowerShell 比较运算符

-eq          等于                   10 -eq 10                true
-ne          不等于                 10 -ne 10                false
-gt          大于                   10 -gt 10                false
-ge          大于                   10 -ge 10                true
             或等于
-lt          小于                   10 -lt 10                false
-le          小于或等于             10 -le 10                true

PowerShell中命令的返回

$java_process=get-process java

以上命令会将进程中所有的java进程以System.Diagnostics.Process对象数组的方式返回,那么$java_process这个变量即为一个对象数组

PowerShell 数组遍历

$java_process=get-process java
foreach($p in $java_process){
   echo $p.Id
}

以上命令的结果是打印出系统进程中所有java进程的进程id

PowerShell 注释

powershell以"#"号为单行注释,例如:

# 定义i为0
$i = 0

多行注释如下

<#
用于多行注释
#>
$i = 0

PowerShell 读取文件并返回以行为数组元素的数组

# 读取C:1.txt内容并输出到D:1.txt,其中|管道符后的%代表遍历读取命令后的数组,$_代表每次遍历的值
Get-Content "C:1.txt"|%{
	echo $_>>D:1.txt
}

PowerShell 查找数组中最大最小值

$list = 1,4,3,1,3,12,990

$result = $list | Measure-Object -Minimum -Maximum
$result.Minimum
$result.Maximum

还可以对日期类型的查找,但实验证明,只有高版本的powershell才支持日期类型

$list = Get-ChildItem -Path C:windows 

$result = $list | Measure-Object -Property LastWriteTime -Minimum -Maximum
$result.Minimum
$result.Maximum

PowerShell创建文件文件夹

new-item -path C: -name backup -type directory #创建目录
new-item -path C: -name backup.txt -type file #创建文件

PowerShell无声强行删除文件夹以及其下的子项

remove-item C:data_old -force -recurse

PowerShell创建windows任务计划

#创建一个任务计划管理对象并获取任务计划根目录
$service = new-object -com("Schedule.Service")
$service.connect($env:COMPUTERNAME)
$RootFolder = $service.getfolder("")

#创建task对象
$Task = $service.NewTask(0)
#给task起个名字
$RegInfo = $Task.RegistrationInfo
$Reginfo.Description = "test"

#设置任务不要立刻运行
$Settings = $Task.Settings
$Settings.StartWhenAvailable = $false 

#为任务创建触发器(这里多说一句,要想让powershell做些管理windows的工作,就必须去读msdn的文档,对于我这种java党,学起来真费劲)
#参考资料:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383898(v=vs.85).aspx
$Triggers = $Task.Triggers
$Trigger = $Triggers.Create(3) #3指的是周任务

#为任务设置有效期,以及每周 周几 几点 运行
#下面的例子是有效期为2014-12-9 4点到2130-8-6 12点为有效期,每周6的4点开始运行任务
$Starttime = "2014-12-09T04:00:00"
$Endtime = "2130-08-06T12:00:00-05:00"
$Trigger.StartBoundary = $Starttime
$Trigger.EndBoundary = $Endtime
$Trigger.DaysOfWeek=64 #64代表周6,具体http://msdn.microsoft.com/en-us/library/windows/desktop/aa384024(v=vs.85).aspx 
$Trigger.WeeksInterval=1#设置为1代表每周

#为任务创建运行程序
#以下例子会在触发运行后,运行powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive -file backup.ps1这条命令
$Action = $Task.Actions.Create(0)
$Action.Path = "powershell" #要运行的程序,可以写路径
$Action.Arguments ="-ExecutionPolicy RemoteSigned -noprofile -noninteractive -file backup.ps1" #powershell运行时的参数
$Action.WorkingDirectory = "C:"#有些程序需要指定运行环境目录,例如这个例子中需要用powershell运行backup.ps1脚本,那么就要指定运行环境为C:下,否则会找不到

#将任务写入
$Rootfolder.RegisterTaskDefinition("起个名字", $Task,6,"你的用户名","你的密码",6)

PowerShell逻辑运算

Powershell 对象判空

if(get-process java){
   #... ...
}

PowerShell 拷贝

# 拷贝当前目录下所有文件到temp文件夹下,且不拷贝以SHQS开头和文件名中含有1的文件
Copy-Item *.* .	emp -Exclude "SHQS*","*1*"