下午好Powershell的巫师们!
我希望有人能向我解释我如何解决这个问题,更重要的是这个问题实际上是什么!
我正试图修复我多年前写的一个旧脚本,该脚本在文件属性中搜索几个日期,并选择一个用于重命名该文件。
我遇到的问题是,当我使用parseExact时,它无法从文件中读取日期字符串...但如果我手动将相同的字符串键入powershell,它就可以工作!
请注意,这个脚本只会在我的PC上运行,并且只需要处理我的文件格式中的日期,所以我不太担心使用$null,除非它是相关的。
请参见以下示例:
Write-Host "TEST 1"
$DateTime = [DateTime]::ParseExact("240720211515","ddMMyyyyHHmm",$null)
Write-Host $DateTime # WORKS!
Write-Host "TEST 2"
$DateTime2 = [DateTime]::ParseExact("240720211515","ddMMyyyyHHmm",$null)
Write-Host $DateTime2 # FAILS!
看起来一样吧?
这是一个更真实的例子,我所做的失败
$file = Get-Item "C:\SomeFolder\somefile.jpg"
$shellObject = New-Object -ComObject Shell.Application
$directoryObject = $shellObject.NameSpace( $file.Directory.FullName )
$fileObject = $directoryObject.ParseName( $file.Name )
$property = 'Date taken'
for(
$index = 5;
$directoryObject.GetDetailsOf( $directoryObject.Items, $index ) -ne $property;
++$index) { }
$photoDate = $directoryObject.GetDetailsOf($fileObject, $index)
Write-Host $photoDate # <-- This reads 03/08/2021 09:15
$output = [DateTime]::ParseExact($photoDate,"dd/MM/yyyy HH:mm",$null) # <-- This fails
Write-Host $output
# If i manually type in here it works.... If I copy and paste from the Write-Host it fails...
$someInput = "03/08/2021 09:15"
$workingOutput = [DateTime]::ParseExact($someInput,"dd/MM/yyyy HH:mm",$null)
Write-Host $workingOutput
1条答案
按热度按时间iszxjhcz1#
对于其他任何遇到这个的人来说,似乎有看不见的角色被添加了。谢谢你的现场@圣地亚哥斯夸松
这是为了我的特定目的而修复的: