2015-03-31 49 views
1

嗨我得到這個格式錯誤,當我嘗試並指定一個DateTime參數的值。這裏是我的腳本這我在PowerShell ISE中按F5運行:

param 
(
    [Parameter(Mandatory=$true)] 
    [datetime]$startTime 
) 

write-output $startTime 

當我運行它,它說,這Supply values for the following parameters:。我曾嘗試指定以下:

startTime: get-date 
startTime: (get-date) 
startTime: new-object DateTime(2015,03,31) 
startTime: (new-object DateTime(2015,03,31)) 
startTime: $(get-date) 
startTime: $((get-date)) 
startTime: $(new-object DateTime(2015,03,31)) 
startTime: $((new-object DateTime(2015,03,31))) 

不過,我不斷收到此錯誤:

Cannot recognise $startTime as a system.datetime due to a format error 

UPDATE: 原來你需要指定類似3/31/2015。 這是爲什麼?上述DateTime對象的格式有什麼問題?

+1

你有沒有嘗試過像'3/31/2015'這樣簡單的參數輸入? – TheMadTechnician 2015-03-31 03:23:43

+0

這有效! 但是爲什麼?我以錯誤的格式提供的論點如何? – 2015-03-31 03:26:24

回答

2

我不能完全重複你所看到的。這裏是我的腳本:

7> Get-Content .\startTime.ps1 
param 
(
    [Parameter(Mandatory=$true)] 
    [datetime]$startTime 
) 

write-output $startTime 

調用像這樣工作的:

8> .\startTime.ps1 (Get-Date) 

Monday, March 30, 2015 9:48:01 PM 

BTW .\startTime.ps1 get-date不起作用,因爲該參數值是字面上的字符串get-date不能被強制轉換爲DateTime對象。同上,用於.\startTime.ps1 new-object DateTime(2015,03,31)因爲開始時間得到的文本字符串new-object,但這樣做的工作:

10> .\startTime.ps1 (new-object DateTime 2015,03,31) 

Tuesday, March 31, 2015 12:00:00 AM 

子表達式版本應該工作以及:

11> .\startTime.ps1 $(new-object DateTime 2015,03,31) 

Tuesday, March 31, 2015 12:00:00 AM 

BTW .\startTime.ps1 3/31/2015作品,因爲文本字符串3/31/2015可以強制轉換一個DateTime對象。

更新:啊,你正在使用ISE的強制參數提示功能。我之前遇到過這個問題。此處提供的值僅作爲字符串應用,即不會評估表達式或子表達式。

+0

不要調用腳本,只需在Powershell ISE中打開腳本並單擊播放按鈕即可。 – 2015-03-31 03:55:38

+1

啊,你正在使用ISE的強制參數提示功能。我之前遇到過這個問題。此處提供的值僅作爲字符串應用,即不會評估表達式或子表達式。 – 2015-03-31 04:55:41

+0

我想這就是答案,但我不能將它標記爲答案,因爲您將它寫爲評論。 – 2015-03-31 05:21:16

相關問題