欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Windows Powershell 定义函数

程序员文章站 2022-03-31 09:14:02
函数是自定义的powershell代码,有三个原则: 简短:函数名简短,并且显而易见。 聚合:函数可以完成多个操作。 封装和扩展:将一批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"。