Windows 使用新TimeSpan计算时间差仅在脚本中失败

Windows 使用新TimeSpan计算时间差仅在脚本中失败,windows,powershell,utf-8,character-encoding,Windows,Powershell,Utf 8,Character Encoding,在我的脚本test.ps1中,我尝试使用New TimeSpan函数计算时间差: $foo = "00:06:45.0" $bar = "00:10:44.0" $StartDate=[datetime]"01/01/2018 $foo" $EndDate=[datetime]"01/01/2018 $bar" Write-Output ($StartDate) Write-Output ($EndDate) NEW-TIMESPAN –Start $StartDate –End $EndDat

在我的脚本
test.ps1
中,我尝试使用
New TimeSpan
函数计算时间差:

$foo = "00:06:45.0"
$bar = "00:10:44.0"
$StartDate=[datetime]"01/01/2018 $foo"
$EndDate=[datetime]"01/01/2018 $bar"
Write-Output ($StartDate)
Write-Output ($EndDate)
NEW-TIMESPAN –Start $StartDate –End $EndDate
运行脚本时,会出现(德语)错误:

让我感到奇怪的是字符串
中的奇怪字符

当我直接在PowerShell中一步一步地输入所有命令时,它可以正常工作


你知道这里有什么问题吗?谢谢

那是U+2013的破折号,这和U+002D连字符减号不同。如果PowerShell能够理解编码(它可以从命令行工作),则PowerShell会接受它,但您的
.ps1
可能会保存为UTF-8,而没有字节顺序标记,从而导致错误地将其检测为Windows-1252(或系统的默认编码)。将文件另存为Unicode,不带BOM的UTF-8或(可以说是最好的)避免使用Unicode破折号。勘误表:“带BOM的UTF-8”。哦,看在上帝的份上!我知道这可能只是个小错误,但我找不到。我是一个复制粘贴的人,如果我自己用键盘键入命令,我就不会使用错误的破折号。。。非常感谢你!
New-TimeSpan : Es wurde kein Positionsparameter gefunden, der das Argument "â€Start 01/01/2018 00:06:45 â€End"
akzeptiert.
In C:\Users\me\Downloads\test.ps1:8 Zeichen:1
+ NEW-TIMESPAN –Start $StartDate –End $EndDate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-TimeSpan], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewTimeSpanCommand