[玩转系统] 关于参数默认值
作者:精品下载站 日期:2024-12-14 02:20:56 浏览:11 分类:玩电脑
关于参数默认值
简短描述
描述如何设置 cmdlet 参数和高级功能的自定义默认值。
详细描述
$PSDefaultParameterValues
首选项变量允许您为任何 cmdlet 或高级函数指定自定义默认值。 Cmdlet 和高级函数使用自定义默认值,除非您在命令中指定其他值。
cmdlet 和高级函数的作者为其参数设置了标准默认值。通常,标准默认值很有用,但它们可能并不适合所有环境。
当您几乎每次使用该命令时都必须指定相同的备用参数值或难以记住特定参数值(例如电子邮件服务器名称或项目 GUID)时,此功能特别有用。
如果所需的默认值可预见地变化,您可以指定一个脚本块,该脚本块在不同条件下为参数提供不同的默认值。
$PSDefaultParameterValues
是在 PowerShell 3.0 中引入的。
句法
$PSDefaultParameterValues
变量是一个哈希表,用于将键的格式验证为 System.Management.Automation.DefaultParameterDictionary 的对象类型。哈希表包含键/值对。 键的格式为CmdletName:ParameterName
。 Value 是分配给键的DefaultValue 或ScriptBlock。
$PSDefaultParameterValues
首选项变量的语法如下:
$PSDefaultParameterValues=@{"CmdletName:ParameterName"="DefaultValue"}
$PSDefaultParameterValues=@{ "CmdletName:ParameterName"={{ScriptBlock}} }
$PSDefaultParameterValues["Disabled"]=$True | $False
CmdletName 和 ParameterName 值中允许使用通配符。
要从 $PSDefaultParameterValues
设置、更改、添加或删除特定的键/值对,请使用编辑标准哈希表的方法。例如,添加和删除方法。这些方法不会覆盖哈希表中的其他值。
还有另一种语法不会覆盖现有的 $PSDefaultParameterValues
哈希表。要添加或更改特定的键/值对,请使用以下语法:
$PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
CmdletName 必须是 cmdlet 的名称或使用 CmdletBinding 属性的高级函数的名称。您不能使用 $PSDefaultParameterValues
指定脚本或简单函数的默认值。
DefaultValue 可以是对象或脚本块。如果该值是脚本块,PowerShell 会计算该脚本块并将结果用作参数值。当指定参数接受脚本块值时,请将脚本块值括在第二组大括号中,例如:
$PSDefaultParameterValues=@{ "Invoke-Command:ScriptBlock"={{Get-Process}} }
有关更多信息,请参阅以下文档:
- about_Hash_Tables
- about_Script_Blocks
- about_Preference_Variables
示例
如何设置 $PSDefaultParameterValues
$PSDefaultParameterValues
是一个首选项变量,因此它仅存在于设置它的会话中。它没有默认值。
要设置 $PSDefaultParameterValues
,请键入变量名称和一对或多对键/值。如果您运行另一个 $PSDefaultParameterValues
命令,它将覆盖现有的哈希表。
有关如何更改键/值对而不覆盖现有哈希表值的示例,请参阅如何向 $PSDefaultParameterValues 添加值或如何更改 $PSDefaultParameterValues 中的值。
要保存 $PSDefaultParameterValues
以供将来会话使用,请将 $PSDefaultParameterValues
命令添加到您的 PowerShell 配置文件中。有关详细信息,请参阅 about_Profiles。
设置自定义默认值
键/值对将Send-MailMessage:SmtpServer
键设置为自定义默认值Server123。
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
}
为多个参数设置默认值
要为多个参数设置默认值,请用分号 (;
) 分隔每个键/值对。 Send-MailMessage:SmtpServer
和 Get-WinEvent:LogName
键设置为自定义默认值。
$PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123";
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
}
使用通配符和切换参数
cmdlet 和参数名称可以包含通配符。使用 $True
和 $False
设置开关参数的值,例如 Verbose。对于所有命令,公共参数的 Verbose 参数均设置为 $True
。
$PSDefaultParameterValues = @{"*:Verbose"=$True}
使用数组作为默认值
如果一个参数可以接受多个值,一个数组,可以设置多个值作为默认值。 Invoke-Command:ComputerName
键的默认值设置为 Server01 和 Server02 的数组值。
$PSDefaultParameterValues = @{
"Invoke-Command:ComputerName"="Server01","Server02"
}
使用脚本块
您可以使用脚本块为不同条件下的参数指定不同的默认值。 PowerShell 评估脚本块并将结果用作默认参数值。
Format-Table:AutoSize
键将参数切换为默认值True。 If
语句包含一个条件,即 $host.Name
必须是 PowerShell 控制台 ConsoleHost。
$PSDefaultParameterValues=@{
"Format-Table:AutoSize"={if ($host.Name -eq "ConsoleHost"){$True}}
}
如果参数接受脚本块值,请将脚本块括在一组额外的大括号中。当 PowerShell 计算外部脚本块时,结果是内部脚本块,并且被设置为默认参数值。
Invoke-Command:ScriptBlock
键设置为系统事件日志 的默认值,因为脚本块包含在第二组大括号中。脚本块的结果将传递给 Invoke-Command
cmdlet。
$PSDefaultParameterValues=@{
"Invoke-Command:ScriptBlock"={{Get-EventLog -Log System}}
}
如何获取 $PSDefaultParameterValues
通过在 PowerShell 提示符下输入 $PSDefaultParameterValues
来显示哈希表值。
$PSDefaultParameterValues
哈希表由三个键/值对设置。以下示例使用此哈希表来描述如何在 $PSDefaultParameterValues
中添加、更改和删除值。
PS> $PSDefaultParameterValues = @{
"Send-MailMessage:SmtpServer"="Server123"
"Get-WinEvent:LogName"="Microsoft-Windows-PrintService/Operational"
"Get-*:Verbose"=$True
}
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
要获取特定 CmdletName:ParameterName
键的值,请使用以下语法:
$PSDefaultParameterValues["CmdletName:ParameterName"]
例如,获取 Send-MailMessage:SmtpServer
键的值。
PS> $PSDefaultParameterValues["Send-MailMessage:SmtpServer"]
Server123
如何向 $PSDefaultParameterValues 添加值
要向 $PSDefaultParameterValues
添加值,请使用 Add 方法。添加值不会影响哈希表的现有值。
使用逗号 (,
) 将键与值分隔。以下语法显示如何使用 $PSDefaultParameterValues
的 Add 方法。
PS> $PSDefaultParameterValues.Add("CmdletName:ParameterName", "DefaultValue")
前面示例中创建的哈希表已使用新的键/值对进行更新。 Add 方法将 Get-Process:Name
键设置为值 PowerShell。
$PSDefaultParameterValues.Add("Get-Process:Name", "PowerShell")
以下语法实现相同的结果。
$PSDefaultParameterValues["Get-Process:Name"]="PowerShell"
$PSDefaultParameterValues
变量显示更新后的哈希表。添加了 Get-Process:Name
键。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-Process:Name PowerShell
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
如何从 $PSDefaultParameterValues 中删除值
要从 $PSDefaultParameterValues
中删除值,请使用哈希表的Remove 方法。删除值不会影响哈希表的现有值。
以下语法显示如何对 $PSDefaultParameterValues
使用 Remove 方法。
PS> $PSDefaultParameterValues.Remove("CmdletName:ParameterName")
在此示例中,更新了前面示例中创建的哈希表以删除键/值对。 Remove 方法删除 Get-Process:Name
键。
$PSDefaultParameterValues.Remove("Get-Process:Name")
$PSDefaultParameterValues
变量显示更新后的哈希表。 Get-Process:Name
键已被删除。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer Server123
如何更改 $PSDefaultParameterValues 中的值
对特定值的更改不会影响现有的哈希表值。要更改 $PSDefaultParameterValues
中的特定键/值对,请使用以下语法:
PS> $PSDefaultParameterValues["CmdletName:ParameterName"]="DefaultValue"
在此示例中,更新了前面示例中创建的哈希表以更改键/值对。以下命令将 Send-MailMessage:SmtpServer
键更改为新值 ServerXYZ。
$PSDefaultParameterValues["Send-MailMessage:SmtpServer"]="ServerXYZ"
$PSDefaultParameterValues
变量显示更新后的哈希表。 Send-MailMessage:SmtpServer
键已更改为新值。
PS> $PSDefaultParameterValues
Name Value
---- -----
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
如何禁用和重新启用 $PSDefaultParameterValues
您可以暂时禁用然后重新启用 $PSDefaultParameterValues
。如果您运行的脚本需要不同的默认参数值,则禁用 $PSDefaultParameterValues
非常有用。
要禁用 $PSDefaultParameterValues
,请添加值为 True 的 Disabled
键。 $PSDefaultParameterValues
中的值会保留,但无效。
PS> $PSDefaultParameterValues.Add("Disabled", $True)
以下语法实现相同的结果。
PS> $PSDefaultParameterValues["Disabled"]=$True
$PSDefaultParameterValues
变量显示更新后的哈希表以及 Disabled
键的值。
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled True
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
要重新启用 $PSDefaultParameterValues
,请删除 Disabled 键或将 Disabled 键的值更改为 $False
。 $PSDefaultParameterValues
之前的值再次有效。
PS> $PSDefaultParameterValues.Remove("Disabled")
以下语法实现相同的结果。
PS> $PSDefaultParameterValues["Disabled"]=$False
$PSDefaultParameterValues
变量显示更新后的哈希表。使用 Remove 方法时,Disabled
键将从输出中删除。如果使用备用语法重新启用 $PSDefaultParameterValues
,Disabled
键将显示为 False。
PS> $PSDefaultParameterValues
Name Value
---- -----
Disabled False
Get-WinEvent:LogName Microsoft-Windows-PrintService/Operational
Get-*:Verbose True
Send-MailMessage:SmtpServer ServerXYZ
参见
- about_公共参数
- about_功能_高级
- about_Functions_CmdletBindingAttribute
- about_Hash_Tables
- about_Preference_Variables
- about_个人资料
- about_Script_Blocks
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag