我想检查DateTime字段是不是空的\ null字符串。如果datetime字段不为null,那么我会做的。
[DateTime]$expdate = Read-Host "Expiration Date? MM/DD/YYYY"
$newexpdate = $expdate.AddDays(1)
if (!([DateTime]$expdate -eq "")) {
Write-Host -ForegroundColor Green $($newexpdate) "Date Time entered"
}
这是我的错误消息:
Cannot convert value "" to type "System.DateTime". Error: "String was not recognized as a valid DateTime." At line:1 char:2 + [DateTime]$expdate = Read-Host "Expiration Date? MM/DD/YYYY" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException + FullyQualifiedErrorId : RuntimeException`
我该怎么做才能检查某个字段是不是字符串但是DateTime
对象?
答案 0 :(得分:2)
为什么在为函数或脚本声明强制DateTime
- 类型参数时提示用户输入?如果缺少该参数,PowerShell将提示用户输入日期和时间,用户可以在运行时输入该参数。 (如果使用Read-Host
,则无法自动执行。)
答案 1 :(得分:-1)
你的逻辑没有多大意义,但这就是我想要做的你想要做的事情(下图)。要直接解决上一个问题,您可以使用-is
或-isNot
运算符测试对象的类型,该运算符将根据匹配项返回$True
\ $False
。运算符的另一侧可以是字符串或类型加速器,即[DateTime]'10/10/2010' -is 'DateTime'
或[DateTime]'10/10/2010' -is [DateTime]
都评估为$True
Do
{
$ExpDate = Read-Host -Prompt 'Expiration date? MM/DD/YYYY'
} Until ($ExpDate -match '\d{1,2}\/\d{1,2}\/\d{2,4}')
$NewExpDate = ([DateTime]$ExpDate).AddDays(1)
If ($ExpDate)
{
Write-Host "$NewExpDate Date Time entered." -ForegroundColor 'Green'
}