我希望在给定空字符串时使用默认值。我希望有更优雅的东西,然后使用if语句检查<code>$Var
下面是我试图完成的一个片段。给定一个空字符串,我希望它打印“Var: DEFAULT”。
$ErrorActionPreference = "Stop"
function Test-Function(
[parameter( Mandatory = $true )][string] $Var = "DEFAULT"
) {
# If Mandatory is set to $true an error is thrown
# "Cannot bind argument to parameter 'password' because it is an empty string."
# When Mandatory is set to $false, $Var is an empty string rather than "DEFAULT"
Write-Host "Var: $Var"
}
$EmptyString = ""
Test-Function -Var $EmptyString
在函数中使用它:
If (!($var)) {$var = "DEFAULT"} #basically, if $var doesn't exist, create it
附言。我刚刚用强制=$false测试了它,它按预期工作,不知道为什么它不适合你,当强制=$false时它会做什么?
没有优雅的方法来做到这一点。至少没有内置的方法来做到这一点。您可以只验证字符串是否为空或为空:
function Test {
Param (
[ValidateNotNullOrEmpty()]
[String]
$String = 'DEFAULT'
)
Write-Host -Object "String: $String"
}
var是一个空字符串,因为您正在显式传递一个空字符串。空字符串仍然是对象,而不是null。您对Test-Function-Var$空字符串的调用无法为您提供所需的输出,因为您将空字符串和null等同起来,而null在. net中为false。您的语句“当强制设置为$false时,$Var是一个空字符串,而不是'DEFAULT'”是正确的,因为您确实传递了一些东西,一个空字符串,因此从未调用值“DEFAULT”的赋值。
您可以删除 Mandatory=$true在这种情况下,当参数未传递时,将显示您的“默认”值。
function Test-Function(
[parameter( Mandatory = $false )]
[string] $Var = "DEFAULT"
){
Write-Host "Var: $Var"
}
Test-Function
这将按预期生成< code>Var: DEFAULT。
无论参数是否为强制参数,如果传递空字符串,则永远不会达到对$Var=“Default”的赋值,因为$Var的值为“”,而该值为空时实际上是一个字符串。
Test-Function ''
这会生成Var:,它看起来可能是错误的,但它会输出您告诉它的空字符串。
如果您想允许在未传递参数时分配默认值,请使用Mandative=$false并像我上面所做的那样分配默认值。如果您想测试传递的值并在它是空字符串时分配默认值,您应该在函数的开始块中执行此操作。
function Test-Function(
[parameter( Mandatory = $false )]
[string] $Var = "DEFAULT"
){
begin{if([String]::IsNullOrWhiteSpace($Var)){$Var="DEFAULT"}}
process{Write-Host "Var: $Var"}
end{}
}
Test-Function
Test-Function ''
Test-Function 'SomeValue'
这将生成以下内容,我相信这是您所期望的:
Var: DEFAULT
Var: DEFAULT
Var: SomeValue
问题内容: 是否可以通过SQL语句确保列的默认值为空字符串而不是? 问题答案: 是-使用DEFAULT约束:
问题内容: 是否可以通过SQL语句确保列的默认值为空字符串而不是? 问题答案: 是-使用DEFAULT约束:
本文向大家介绍如何从PowerShell中删除空字符串/行?,包括了如何从PowerShell中删除空字符串/行?的使用技巧和注意事项,需要的朋友参考一下 在许多情况下,您需要从PowerShell字符串数组或文件中删除空行或字符串。在本文中,我们将删除结果或从不为空的行中过滤输出,而不是删除空字符串。这样,我们可以获得没有空行的输出。 考虑下面的示例,我们有一个名为EmptryString.tx
在PowerShell中,是否有一个内置的类函数来检查字符串是空还是空? 到目前为止我还找不到它,如果有一个内置的方式,我不想为此写一个函数。
我有一个打开的api yaml文件如下。我想分配空字符串值作为默认字符串类型属性。做这件事的方法是什么
Powershell 5说“no way Jose”,不能用空字符串或空字符串连接path。我说为什么不呢?有没有办法让join-path更“灵活”,而无需添加更多if-else块?