有哪些隐藏功能电源外壳?
答案1
强制 Powershell 函数真的返回一个数组,即使是一个空数组。
由于 @() 语法的实现方式,函数可能并不总是按预期返回数组,例如以下代码将返回 $null 和不是一个空数组。如果您使用 set 测试代码,则在尝试引用该属性时set-StrictMode -On
会收到错误:PropertyNotFoundStrict
.count
function test
{
#some code that might return none,one or multiple values
$data = $null
return @($data)
}
(test).count
只需在前面添加一个,
就@()
可以绕过“语法糖”,并且会返回一个实际的数组,即使它是空的:
function test2
{
#some code that might return none,one or multiple values
$data = $null
return ,@($data)
}
(test2).count
答案2
创建您自己的自定义函数并将其保存在您的个人资料中。您可以构建大量有用的函数,而无需每次出现类似问题时都重新思考。
编辑您的个人资料:
PS C:\> notepad $profile
答案3
Add-Type -Assembly
通过使用程序集名称或dll 路径访问任何 .net 类Add-Type -Path
,然后使用类似的语法[Namespace.Dotted.ClassName+NestedClass]::StaticMethod()
来创建New-Object Namespace.Dotted.ClassName
或调用类型的静态方法/字段。
答案4
Splatting。您可以在 Hashtable 中定义一堆参数,然后将其用作函数的参数。
$sendMailParameters = @{
To = '[email protected]'
From ='[email protected]'
Subject = 'Something'
Body = 'Some stuff'
BodyAsHtml = $true
}
Send-MailMessage @sendMailParameters