Powershell的任务计划中的日期格式错误

时间:2013-09-10 21:48:36

标签: date powershell schtasks.exe

我只在Windows中遇到问题......(Bless windows ...)

如果我在powershell运行此脚本:

schtasks.exe /create /tn "Test_22"  /tr "powershell.exe C:\site.org\tasks\Test_22\Test_22.ps1"  /sc once /st 17:22 /sd (get-date (get-date -Date "2013-09-10") -Format dd/MM/yyyy) /ru System /rl HIGHEST  

完全符合我的要求!但这只适用于西班牙语语言环境的计算机。具有英语语言环境的那些失败,导致10/09/2013意味着2013年10月9日。这没关系......问题是,如果我这样做:

((Get-Culture).DateTimeFormat).ShortDatePattern

它不会返回MM / dd / yyyy,但M / d / yyyy不正确,导致一些惊人的原因,因为schtasks.exe不一样9/10/2013和09/10 / 2013。

我有什么方法可以解决这个问题而不必做出:

switch (((Get-Culture).DateTimeFormat).ShortDatePattern) {
   case M/d/yyyy : format = StupidWindows
}

或类似的东西?

值得一提的是我不是PowerShell的专家,所以也许愚蠢的是我而不是windows(虽然经过一段时间调查这个,我很确定愚蠢的是Windows而不是我......)< / p>

1 个答案:

答案 0 :(得分:1)

这个怎么样(为了便于阅读,使用反引号转义符分为多行):

$StartDate = New-Object -TypeName DateTime -ArgumentList:(2013,09,10)
$FormatHack = ($([System.Globalization.DateTimeFormatInfo]::CurrentInfo.ShortDatePattern) -replace 'M+/', 'MM/') -replace 'd+/', 'dd/'

schtasks.exe /create 
    /tn "Test_22" `
    /tr "powershell.exe C:\site.org\tasks\Test_22\Test_22.ps1" `
    /sc once `
    /st 17:22 `
    /sd $StartDate.ToString($FormatHack) `
    /ru System `
    /rl HIGHEST

如果您使用的是Powershell 3,请查看PSScheduledJobs模块。