power shell 函数 管道
- 一、函数
- 二、管道
一、函数
重复用的指定序列 给模块化的指令序列取名。通过名字调用这个指令序列
定义
function–关键字
函数名–自定义(一个以上的英文单词,小驼峰:第一个英文单词首字母小写,第二个英文单词首词母大写;帕斯卡:所有首字母都大写)
()–参数列表,形参列表
{}–函数体,编写指令序列
形参
形式参数,用来声明函数接受的参数个数,顺序和类型
传参
- 对没有声明形参的函数也可以传参,通过空格来区分参数,参数被放入到args(系统自带)这个数组里
- 对声明了形参的函数传参,可以通过空格来区分参数,这样必须保证传递的参数与形参顺序匹配
- 对声明了形参的函数传参,可以通过-形参名来指定为某一个参数传参,可以不考虑形参顺序
- 对于PowerShell这种结构特别松散的脚本,可以不考虑形参个数和顺序。
4.1. 传递参数时,如果参数个数不足,则以空填充
4.2. 传递参数时,如果参数个数多于形参,则把多的参数放入args数组里
传参建议
按照强类型语言的约定进行参数传递
返回值
return 返回值
局部变量和全局变量
在一对{}里面定义的变量,仅仅只能在当前这个代码段里面使用这叫局部变量;
在函数外面定义的变量,可以在所有的函数里面使用,这叫全局变量;
二、管道
1、管道
第一个命令(函数)的结果做为第二个命令(函数)的输入
函数可以自定义
| – 管道关键字
2、常用的管道函数
1、 ls--获取当前目录的所有文件信息Get-ChildItem | Where-Object {$_.Length -gt 200} | Sort-Object -Descending Name“Get-ChildItem”意思是获取当前路径的所有项目,“|Where-Object {$_.Length -gt 200}”意思是查看上一步结果,取所有长度大于200的项目,“|Sort-Object -Descending Name”意思是查看上一步结果,按照Name进行倒叙排列。![在这里插入图片描述](Shell/https://aiznh.com/wp-content/uploads/2021/06/20210608231238-60bff966769ee.jpg)2、Where-Object:过滤列表项或命令输出结果3、 ForEach-Object:处理列表或者命令输出的每一个项目4、Select-Object:选择列表项或输出结果只输出要的结果a、dir | Select-Object Name , Length 选择当前路径下所有项目的Name和Length属性:b、dir | Select-Object -First 3 选择当前路径下前三个项目c、 dir | Select -Property Name , @{Name = \"Last Modified Day\"; Expression ={ $_.LastWriteTime.DayOfWeek}} 选择当前路径下所有项目的Name和自定义属性,名字叫做Last Modified Day,结果是通过LastWriteTime属性算出来的d、dir | select -index 0,5 选择当前路径下第一个和第六个项目e、dir | select -skip 4 选择当前路径下除第五个项目外的所有项目f、1,1,2,2,4,4,5,5,6,7,8,8 | select -Unique 显示数组中的唯一数字5、 Sort-Object:对列表项或者输出结果进行排序a、dir | Sort-Object -Property Length 对当前路径下所有的项目按照长度从小到大排序b、 1,1,2,3,5,5,6,6,7,8,9 | sort -Descending -Unique 对整个数组的唯一性数字按照降序排列6、 Tee-Object:保存并输出列表项或者输出结果a、dir | Where-Object {$_.Length -gt 900}| Tee-Object -FilePath teeResult.txt将当前路径下所有大小大于900的项目都保存到文件中并显示在控制台中7、Group-Object:对列表项或者输出结果进行分组8、Measure-Object:对列表项或输出结果进行计算9、Compare-Object:对两组对象进行比较10、ConvertTo-Html:将对象转换为HTML11、Export-Csv:将对象转换为CSV字符串存储在文件中12、Format-List、Format-Table、Format-Wide:将输出结果格式化13、Get-Unique:获取输出结果的唯一值14、 Out-File:将输出结果输出到文件15、Get-Member:如何获取管道操作对象的属性16、如何判断一个命令是否支持管道输入学会使用管道后,得学会判断一个命令是否支持管道输入。使用Get-Help命令获取一个命令的使用方法,对于参数,可以看到是否支持管道输入,或者通过MSDN去查询命令帮助。比如PowerShell Core里面的Where-Object的MSDN的帮助站点是:https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.core/Where-Object。对于里面的-InputObject则是支持管道输入,-Is则不支持管道输入: