千家信息网

Powershell 函数中的CmdletBinding()是怎么回事?

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,参考文章:Don Jones https://technet.microsoft.com/en-us/library/ff677563.aspxpowershell 帮助文档:help about_f
千家信息网最后更新 2025年01月23日Powershell 函数中的CmdletBinding()是怎么回事?

参考文章:

Don Jones https://technet.microsoft.com/en-us/library/ff677563.aspx

powershell 帮助文档:

help about_functions_advanced_parameters

help about_common_parameters


把这三部分内容都看完了,应该也大概了解函数中的CmdletBinding()是做什么用的了,官方的文档都是英文的,看起来一般会头大。以下就是我用通俗的语言来做的描述,更简单易懂一些。


这个功能的引入是从Powershell Version 2开始的,叫做函数的高级功能,在函数的声明出启用以后,可以调用我们所说的通用参数:

  • -Verbose

  • -Debug

  • -ErrorAction

  • -WarningAction

  • -ErrorVariable

  • -WarningVariable

  • -OutVariable

  • -OutBuffer

  • -PipeLineVariable

通过放在函数开始部分可以很简单的启用访问这些通用参数。如下所示:

[CmdletBinding()]

param()


启用这个高级属性以后,就可以很容易的通过像使用命令行一样,给函数添加一些命令行的特色,调用命令很的通用参数。以下是一个最简单的例子,打开一个ISE,把以下的内容复制下去:


function Go-Advanced {

[cmdletbinding()]param()

}


param() 这个关键字还是必须要有的,即使你没有在函数中定义任何参数;


尝试运行一下这个函数,然后再打一下中横线,怎么样,就看到能够调用的这些通用参数了吧。


以下举几个例子来调用这些通用参数,先来说说Verbose的用法。

还是在ISE中输入以下代码


Function Go-Verbose {

[CmdletBinding()]Param()

Write-Verbose "Alright, you prefer talkative functions. First of all, I appreciate your wish to learn more about the common parameter -Verbose. Secondly, blah blah.."

Write-Host "This is self-explanatory, anyway."

}

再执行以下,看看是不是以下结果,通过这个例子,你就明白verbose是怎么出来的,这个单词是很难翻译的,只能是通过例子弄明白是什么意思。


再举一个例子,就是调用ShouldContinue这个方法,这个在写程序时还是很重要的,比如你想做一些破坏性的操作,程序写的健壮是一定要跳一个框出来,问一下再去执行,那种SilientContinue做法不推荐。

以下还是代码:


这段代码还是要在函数执行时加一个 -confirm参数的。如果想不加这个参数也要跳出这个框来,这样就需要一个额外的操作。把环境变量$ConfirmPreferece 设置成低。看以下代码和执行效果。



Function Remove-ByForce {

[CmdletBinding(SupportsShouldProcess)]

Param([String]$File)

$ConfirmPreference = "Low"

If ($PSCmdlet.ShouldContinue("Are you sure that you know what you are doing?","Delete with -Force parameter!")) {

Remove-Item $File -Force

} Else {

"Mission aborted!"

}

}

Remove-ByForce test




以上就是两个基本的例子,接下来的文章会讨论

param()中的[parameter()]对变量的影响。





函数 参数 例子 还是 代码 命令 就是 高级 内容 功能 变量 文档 文章 程序 部分 健壮 通俗 重要 接下来 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 冬奥会网络安全应急人员名单 国外网络安全的电影 我的世界服务器封包率 服务器建立链接下载东西 湖北常见软件开发要多少钱 我的世界服务器初始内存越来越大 互联网科技资料 江西网络安全知识竞赛各题答案 小程序添加数据到数据库 数据库如何查入数据代码 kit服务器 linux追加数据库 无锡个人软件开发管理方法 饥荒怎么看本地服务器 数据库实验报告表 软件开发项目共建协议 猫猫软件开发 计算机网络技术职业素养目标 绝地求生服务器怎么样 湖州java软件开发自学步骤 辽宁正规软件开发服务有哪些 关于数据库的故事 宁盾杯网络安全攻防大赛试题 数据库当前日期减去出生日期 顺平软件开发系统 即时通讯软件开发的服务哪家好 企业客户信息管理系统数据库 机关单位网络安全重要性 南京推广软件开发产品介绍 安徽潮流软件开发价格有哪些
0