Windows Powershell 定义函数
函数是自定义的powershell代码,有三个原则:
简短:函数名简短,并且显而易见。
聚合:函数可以完成多个操作。
封装和扩展:将一批powershell语句进行封装,实现全新的功能需求。
函数的结构由三部分组成:函数名,参数,函数体
function funcname (args[])
{
code;
}
使用函数作为别名
假如powershell不支持”cd..” 命令,你可以通过定义函数实现这个功能:
ps c:powershell> function cd.. { cd ..}
ps c:powershell> cd..
ps c:>
假如powershell不支持ping命令,也可以如法炮制:
ps c:powershell> function ping2 { ping.exe -n 1 $args }
ps c:powershell> ping2
正在 ping mossfly.com [116.255.205.70] 具有 32 字节的数据:
请求超时。
116.255.205.70 的 ping 统计信息:
数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
控制台上多行输入定义函数
ps c:powershell> function myping
>> {
>> ping.exe -n 1 $args
>> }
>>
ps c:powershell>
把函数精简成一行
你 可以将一个函数定义在一行上,但是这样阅读和理解起来就不方便,可以在每条命令后加分号进行分割。
ps c:powershelltest> function cd...{ cd.. ; cd.. }
ps c:powershelltest> cd...
ps c:>
使用文本编辑器
函数可以在文本编辑器上编写,写完以后复制进powershell控制台即可。如果控制台设置为快速编辑模式,从记事本复制后,直接在控制台鼠标右键即可完成黏贴。
更新函数
如果要更新已经定义好的函数,简单的方法是重新定义,这样新的定义会覆盖旧的定义。但是如果函数代码没有保存副本,可以先将函数定义导出到ps文件,然后就可以编辑了。
ps c:powershell> $function:myping | out-file myping.ps1
ps c:powershell> $function:myping
ping.exe -n 1 $args
ps c:powershell> $function:myping | out-file myping.ps1
ps c:powershell> .myping.ps1
必须指定 ip 地址。
ps c:powershell> notepad.exe $$
删除函数
控制台定义的函数只会在当前会话生效,一旦控制台退出,会自动消失。在不关闭控制台的条件下删除一个已经定义好的函数,可是使用虚拟驱动器的方法:
ps c:powershell> del function:myping
ps c:powershell> myping
无法将“myping”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的
拼写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 7
+ myping <<<<
+ categoryinfo : objectnotfound: (myping:string) [], commandnotfo
undexception
+ fullyqualifiederrorid : commandnotfoundexception
suggestion [3,general]: 未找到命令 myping,但它确实存在于当前位置。windows pow
shell 默认情况下不从当前位置加载命令。如果信任此命令,请改为键入 ".myping"。有
关更多详细信息,请参阅 "get-help about_command_precedence"。