如果语句中有多路分支,使用IF-ELSEIF-ELSE不友好,可以使用Switch
使用switch时缺省的比较运算符-eq等于,也可以自行定制比较条件,将条件放入花括号中,必须保证条件表达式的返回值为布尔类型“$True”或“$False”。
如果case中有多个条件匹配,那么每个匹配的条件都会进行处理,如果碰到匹配条件时只处理一次,可以使用break关键字。
switch有一个case选项,一旦指定了这个选项,比较运算符就会从-eq切换到-ceq,即大小写敏感比较字符串。
switch语句后指定-wildcard选项可使用通配符。
给switch关键字指定选项-regex可使用正则表达式。
2.PowerShell循环
F
or
Each-Object
在ForEach-Object中,$_代表当前对象,当然也允许通过$_,调用该对象支持的方法。
F
oreach
Foreach-object为cmdlet命令,使用在管道中,对管道结果逐个处理,foreach为遍历集合的关键字。
D
o-While
do-while()会先执行再去判断,能保证循环至少执行一次。
For(初始条件;执行循环前的判断;执行循环后的操作)
S
witch
switch本是多路分支的关键字,但是在powershell中由于switch支持集合,所以也可以使用它进行循环处理。
3.PowerShell函数
函数的结果由三部分组成:函数名、参数、函数体
处理函数的参数
任意函数:内部变量$args接受函数调用时接受的参数,$args是一个数组类型。
命名参数:函数的每一个参数可以分配一个名称,在调用时通过名称指定对应的参数。
预定义参数:函数在定义参数时可以指定默认值,如果调用时没有专门指定参数的值,就会保持默认值。
指定函数的返回值
函数 过滤器 管道
在最简单的情况下,函数不是真正支持管道。只能对前一个命令执行后的结果处理。只能对前一个命令执行后的结果处理。前一个命令执行的结果通过被自动保存在$input变量值,$inpute是一个数组,它可以包含许多元素,一个元素,甚至一个元素都没有,这取决于具体的环境。
管道的低效率顺序模式在处理大容量数据时很容易出现问题,其结果是巨大的内存占用和进程等待。如果函数支持高效率的流模式,在处理管道结果时仅占很小的内存。
如果一个函数内部使用了管道,就可以定义三个基础的任务区:第一步,完成函数的初始化,完成函数执行的预备步骤;第二步处理递归调用所得的结果;最后进行收尾工作。这三个任务区分别可以使用begin,process,end语句块。
4.PowerShell脚本
编写和运行脚本
一个powershell脚本仅仅是一个包含powershell代码的文本文件。如果这个文本文件执行,powershell解释器会逐行解释并执行它的语句。powershell脚本非常像以前的cmd控制台上的批处理文件,可以通过文本编辑工具创建powershell脚本。
如果脚本不是很长,可以直接在控制台中要执行的语句重定向给一个脚本文件,缺点是代码必须放在闭合的引号中。书写方式一旦在脚本内部也有引号时,可以将脚本文件通过@‘ ‘@闭合起来,任何文本都可以存放在里面,即使是一些特殊字符,空号,白空格。
PowerShell般初始化情况下都会禁止脚本执行。脚本能否执行取决于 Power Shell的执行策略,只有管理员才有权限更改这个策略。非管理员会报错。
更改脚本执行策略,可以通过
脚本执行策略
-
Restricted 这是默认的设置。在任何条件下,根本没有 Power Shell脚本运行
-
AsIgned 只有数字签名的脚本(包括配置文件脚本)将会运行,此外,会提示你允许运行那些使用指定的证书签名的脚本;
-
Remotesigned 经本地编写的脚本将会运行。从网络下载的脚本运行,除非他们签名了并且你批准了的签名的证书;
-
UnRestricted 所有的脚本都将运行,但是,对于下载的脚本会警告你,而且,它们运行前必须批准
-
ByPass 任何脚本都将运行,而且不管其来源。这是一个潜在的非常危险的设置,只有在非常特定的情况下才使用;其中,其他的安全性系统已经准备好了,可以防上流氓脚本未经你的许可而运行
-
未定义 如果没有认为的设置过主机的 Power Shel脚本执行策略。默认是 Restricted,没有脚本会运行
给脚本传递参数
1.PowerShell条件判断条件表达式比较运算符:-eq、-nc、-gt、-gc、-lt、-le、-contains、-notcontain逻辑运算:-and、-or、-xor:异或、-not或者!:逆WhereObject条件过滤在管道中可以通过条件判断过滤管道结果,Where-Object会对集合逐个过滤,将符合条件的结果保留。IF ELSEIF ...
内容简介:
Get practical guidance for using
Windows
PowerShell
to manage
Windows
Vista and
Windows
Server 2008. Written by Ed Wilson, a leading scripting expert and trainer at Microsoft, this reference offers a task-based approach to help you find the information you need for day-to-day tasks. With more than 200 scripts, it offers rich examples that administrators can customize for their own environment and needs. The scripts range in complexity from one-line commands, to full-blown scripts with managed output and command-line arguments examples that are applicable to all skill levels. Includes a companion CD with fully searchable eBook, sample scripts, and other resources for managing your
Windows
-based environment.Key Book Benefits
Delivers more than 200 scripts administrators can customize and use to get up and running quickly
Provides multiple ways of accomplishing tasks: from one-line commands to full-blown scripts with managed output and command-line arguments
Features a task-oriented approach, and organized to help you quickly find the information you need for your day-to-day activities
Includes a companion CD with a fully searchable eBook, sample scripts, and other resources for on-the-job results
9. Configuration Desktop Settings
10. Managing Post-Deployment Issues
11. Managing User Data
12. Troubleshooting
Windows
13. Managing Domain Users
14. Configuring the Cluster Service
15. Managing Internet Information Services
16. Working with the Certificate Store
17. Managing the Terminal Services Service
18. Configuring Network Services
19. Working with
Windows
Server 2008 Server Core
一般我们认为欸的
批处理
是循环遍历对象,一个一个的进行处理,这种思想在
PowerShell
也是可用的,同时还有更好的
批处理
方法,下面介绍几种
批处理
方法:
1,使用
PowerShell
Cmdlet进行
批处理
;
利用管道(Pipeline)将一个Cmdlet产生的结果传输给另一个Cmdlet,
PowerShell
知道如果处理传入的多个对象;
PS C:\Users\Administr...
在之前的几篇里我们已经学会了如何使用Get-Help命令来查看指定命令的帮助信息,以及如何使用“管道”符将多个命令连接在一起组合使用。
今天要说的另一个极为非常有用的命令就是Where-
Object
。Where-
Object
它的主要作用是可以自定义过滤
条件
,并过滤从管道传递来的对象数据。简单的说就是Where-
Object
命令是用来做过滤用的一个命令,一般置于管道后。
举个例子,我们要获得C:\
Windows
目录下所有大小超过200 bytes的文件。像下面这样只需要一行命令就可以解决这个问题(稍后我们