【发布时间】:2016-04-14 20:37:55
【问题描述】:
当涉及到参数时,PowerShell 如何处理表示 DateTime 的字符串,我有点困惑。我的脚本有一个参数定义如下:
[CmdletBinding(DefaultParameterSetName='Kunde')]
param(
[Parameter(Mandatory=$true, ParameterSetName='Kunde')]
[string]$KdNr,
[Parameter(Mandatory=$true, ParameterSetName='Kunde')]
[DateTime]$von,
[Parameter(Mandatory=$true, ParameterSetName='Kunde')]
[DateTime]$bis,
[Parameter(Mandatory=$true, ParameterSetName='Kunde')]
[string]$Empfaenger
)
我想输入以下日期:1. 2016 年 4 月作为我的语言环境字符串 01.04.2016。现在 PowerShell 做了一些意想不到的事情(至少对我来说):
- 当 PowerShell 查询缺少的强制参数时,我在命令提示符处输入字符串
01.04.2016。然后将其解析为 2016 年 4 月 1 日。 - 我像
ZippenUndMailen.ps1 -von '01.04.2016'这样直接在命令行中输入相同的字符串01.04.2016,现在 PowerShell 使用美国符号 2016 年 1 月 4 日解析该字符串。
我有两个问题:
- 为什么 PowerShell 解析字符串的方式不同?
- 如何最好地纠正这种行为?脚本应该被手动和通过 TaskScheduler 重用和调用,这种行为是相当反直觉的。
【问题讨论】:
标签: parsing powershell datetime locale