设置PowerShell中的cmdlet参数默认值
来源:互联网 发布:photoshop有没有mac版 编辑:程序博客网 时间:2024/04/30 11:03
今天我们来看下PowerShell中早在3.0版本的时候就引进的设置默认值功能。
$PSDefaultParameterValues主要是为Cmdlet和高级函数指定设置自定义值,下来让我们通过几个例子详细看看具体如何使用。
我们可以使用如下基本语法为Cmdlet的默认值设置指定的默认值。
$PSDefaultParameterValues=@{"<CmdletName>:<ParameterName>"="<DefaultValue>"}
下面的例子中,$PSDefaultParameterValues为Get-Process的Name属性设置了一个默认值为notepad的值,当我们再次输入Get-Process不配合任何参数,你将会看到它默认输出了notepad的信息。
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = "notepad"}PS C:\Users\Administrator> Get-ProcessHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- ----------- 87 7 1368 5916 ...50 0.11 1204 notepad
当然我们不仅可以设置单纯的默认值还可以以语句块的方式去设置默认值,如下。
$PSDefaultParameterValues=@{"<CmdletName>:<ParameterName>"={<ScriptBlock>}}
在这里,我们做了一些特殊的修改,把一个表达式写入语句块里并把这个得到的值再复制给Name属性,输出结果和上一个例子相同。
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select -ExpandProperty processname}}PS C:\Users\Administrator> Get-ProcessHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- ----------- 87 7 1368 5916 ...50 0.11 1204 notepad
那么如何查看当前设置了哪些默认值呢?很简单,直接输入$PSDefaultParameterValues
PS C:\Users\Administrator> $PSDefaultParameterValuesName Value---- -----Get-Process:Name (Get-Process -Id 1204)|select -ExpandProperty processname
那么如果想要多次为$PSDefaultParameterValues默认值又改怎么做呢,直接设置可以吗?我们来试试看看:
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select processname}}PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Content:Path" = "C:\XMLSample\New Text Document.txt"}PS C:\Users\Administrator> $PSDefaultParameterValuesName Value---- -----Get-Content:Path C:\XMLSample\New Text Document.txt很显然,当你在直接输出$PSDefaultParameterValues的时候,它的值被最后一次的命令设定给覆盖了,如果想要多次设置$PSDefaultParameterValues的默认值我们应该使用它的Add方法,如下:
PS C:\Users\Administrator> $PSDefaultParameterValues = @{"Get-Process:Name" = {(Get-Process -Id 1204)|select processname}}PS C:\Users\Administrator> $PSDefaultParameterValues.Add("Get-Content:Path","C:\XMLSample\New Text Document.txt")
PS C:\Users\Administrator> $PSDefaultParameterValuesName Value---- -----Get-Process:Name (Get-Process -Id 1204)|select processnameGet-Content:Path C:\XMLSample\New Text Document.txt
关闭$PSDefaultParameterValues默认值功能,只需要设置它的 Disbaled 键值为$true就行了,即便当我们在如下例子中在使用Get-Process查看的时候,它原先的默认值功能已经不起作用了,输出了所有的信息。
PS C:\Users\Administrator> $PSDefaultParameterValues.Add("Disabled", $true)PS C:\Users\Administrator> $PSDefaultParameterValuesName Value---- -----Get-Process:Name (Get-Process -Id 1204)|select processnameGet-Content:Path C:\XMLSample\New Text Document.txtDisabled TruePS C:\Users\Administrator> get-processHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- ----------- 113 20 12408 16724 ...68 0.19 2756 calc 54 9 1068 4620 ...17 0.03 1672 conhost 42 7 792 3248 ...09 0.00 2224 conhost 78 10 2320 18260 ...31 1.17 2996 conhost 257 11 1780 3808 47 0.42 320 csrss 327 25 2228 85032 246 8.36 388 csrss 196 13 3256 10692 ...01 0.08 2032 dllhost 306 51 95356 150892 ...92 11.81 688 dwm 1455 118 53088 142576 ...11 34.67 2268 explorer 0 0 0 4 0 0 Idle 678 56 34128 62972 305 4.33 1640 iexplore
0 0
- 设置PowerShell中的cmdlet参数默认值
- PowerShell Cmdlet Expand
- Build a PowerShell cmdlet
- PowerShell命令cmdlet大全
- 创建自己的 PowerShell cmdlet
- 参数默认值的设置
- 函数参数默认值设置
- 重载-参数含有设置默认值
- TestComplete如何设置参数默认值
- PowerShell的CmdLet开发的HelloWorld
- PowerShell的CmdLet开发的HelloWorld
- Windows PowerShell:在脚本中编写 Cmdlet
- Restart-Computer cmdlet enchancements in Windows PowerShell
- PowerShell中的PassThru参数是什么
- Windows Powershell中的函数参数
- C语言中的参数默认值
- C语言中的参数默认值
- js设置<select>中的默认值
- (转)Java的JAR包, EAR包 ,WAR包内部结构
- 序列化和反序列化
- 建造者(Builder)模式
- python 爬虫相关学习资料
- 内存
- 设置PowerShell中的cmdlet参数默认值
- 如何用消息系统避免分布式事务?
- Internet路由之路由表查找算法概述-哈希/LC-Trie树/256-way-mtrie树
- oracle11g cursor:mutex S导致的load过高的追踪过程详解
- mySQL数据库连接
- 外部排序,C++实现
- h5学习笔记:横排导航
- Git 常用命令整理
- 数理统计笔记