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 *.* .\temp -Exclude "SHQS*","*1*"
posted @ 2014-12-09 11:11  虎卧荒丘  阅读(389)  评论(0编辑  收藏  举报