函数
定义与调动
函数代码块以function关键词开头,后接函数标识符和圆括号()
参数放在圆括号中间,各参数之间以逗号隔开。
函数的第一行语句可以选择性的使用文档字符串#用于存放函数说明。
函数内容以{ 并行缩进;return [表达式] } 结束函数,选择性的返回一个值给调用方。
不带”return[表达式]“,函数默认返回None;否则返回相应表达式的值
例如:
参数
–形参
在定义函数时需要申明函数需要接收的参数个数,类型,顺序。在PowerShell中有一个隐形的形参args[],即使在申明函数时没有申明形参,也可以使用这个参数来取值。
例如:
–实参
实参就是调用函数过程中给函数传入的实际参数值,参数传递过程中必须按照形参定义的顺序,个数和类型来传入。
违背类型的参数会造成一些编译异常。
实参传递过程中,如果超出形参个数,则这部分的参数将被args接收。
在PowerShell中传递参数还可以指定参数名进行传播。
例如:test -a 1 -b 2
–变量的作用域
全局变量和局部变量,局部变量只能在申明的函数内部使用,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内申明的变量名称都将被加入到作用域中。
例如:
全局变量则可以让两个函数都能访问到
管道
管道可以把上一条命令的输出作为下一条命令的输入。
“|” – 管道关键字
例如通过ls获取当前目录的所有文件信息,然后通过Sort -Descending 对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出。
Where-Object
:过滤列表或命令输出结果,例如:
ls | sort -Descending Length | Where-Object {$_.Name -like "*d*"}
查找ls中的名字Name倒叙排列之后,Name中的首字母是d的内容不区分大小写。
ls | sort -Descending Length | Where-Object {$_.Name -like "*d*"}
查找ls中的名字Name倒叙排列之后,Name中包含字母是d的内容不区分大小写。
区分大小写的是-clike
ls | sort -Descending Length | Where-Object {$_.length -lt 20}
查找ls中的名字Name倒叙排列之后,Length的大小是小于20的内容不区分大小写。
ForEach-Object
处理列表或者命令输出的每一个项目。
使用ForEach-Object命令(别名是foreach和%)来处理列表中的每一项。
对1到10每个数都✖5
Select-Object
选择列表项或输出结果只输出要的结果。
使用Select-Object(别名是select)对象可以选择一个对象或者一组对象的指定属性。还可以从对象数组中选择唯一对象,也可以从对象数组的开头和末尾选择指定个数的对象。例如:
a.选择当前路径下所有项目的Name和Length属性。
b.选择当前路径下的前三个项目
c.选择当前路径下所有项目的Name和自定义属性,名字叫做Last Modified Day,结果是通过LastWriteTime属性算出来的
d.选择当前路径下的第一个和第六个项目:
e.选择当前路径下除了第五个项目外的所有项目。
Sort-Object
对列表项或者输出结果进行排序
使用Sort-Object(别名是sort)可以按照特定属性值对对象进行排序。可以指定一个属性或多个属性(用与多键排序),也可以区分大小写或不区分大小写的排序。还可以指示Sort-Object 只显示对于特定属性具有唯一值的对象。如果某个对象不具有所指定的属性之一,则cmdlet会将对象的属性值解释为NULL,并将其放置在排序顺序的末尾。例如:
Tee-Object
保持并输出列表项或者输出结果。
Group-Object
对列表项或者输出结果进行分组