无法获得Folder.GetDetailsOf()以秒为单位返回文件时间

我试图从iPhone上的文件访问文件创build的时间信息,当它连接到我的Windows笔记本电脑。 我已经放了一个小的PowerShelltesting脚本,成功地做到这一点,有一个小缺点:函数Folder.GetDetailsOf(…,4) ,它返回文件的创build时间,不包括秒…(一个示例输出是“18/03/2017 21:58”。)

我怎么会得到Folder.GetDetailsOf()也返回秒?

我试过应用不同的文化(地区):

  • 使用所需的时间格式设定新的文化;
  • 如MSDN博客中所述,使用Using-Culture包装所有内容;
  • 将系统范围的短时间格式(在Windows设置=>时钟,语言和区域中)设置为“HH:mm:ss”。

这似乎没有工作…但是, Get-Date函数应用新的文化就好了。 这两个函数之间的主要区别在于Folder.GetDetailsOf通过COM对象(Shell.Application)运行,而Get-Date不通过。 如果使用不同的文化确实是要走的路,那我怎么能把它们应用到COM对象呢?

示例脚本

Function Using-Culture ( [System.Globalization.CultureInfo]$culture = (throw “USAGE: Using-Culture -Culture culture -Script {scriptblock}”), [ScriptBlock]$script= (throw “USAGE: Using-Culture -Culture culture -Script {scriptblock}”) ) { $OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture trap { [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture } [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture Invoke-Command $script [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture } $currentThread = [System.Threading.Thread]::CurrentThread [System.Globalization.CultureInfo] $culture = "nl-NL" $culture.DateTimeFormat.LongTimePattern = 'HH:mm:ss' $culture.DateTimeFormat.ShortTimePattern = 'HH:mm:ss' $culture.DateTimeFormat.FullDateTimePattern = 'dd MMMM, yyyy HH:mm:ss' $currentThread.CurrentCulture = $culture $currentThread.CurrentUICulture = $culture Using-Culture $culture { # This outputs the date in Dutch, using the format above; # if the format above is changed, then Get-Date's output does too Get-Date $path = 'C:\Windows\System32\notepad.exe' $shell = New-Object -COMObject Shell.Application $folder = Split-Path $path $file = Split-Path $path -Leaf $shellfolder = $shell.Namespace($folder) $shellfile = $shellfolder.ParseName($file) # GetDetailsOf() on the other hand is oblivious to the newly set culture $shellfolder.GetDetailsOf($shellfile, 4) } 

为什么我需要这个?

当从我的iPhone上复制video时,这些文件会在我的笔记本电脑上创build一个新的创build时间,所以我失去了原来的(实际)时间。 修改时间确实被复制,但并不总是正确的。 (不太清楚为什么,这有时也会发生,当我开枪后没有做任何与video。

为了修复创build时间,我正在从video中提取“创build时间”, 他们仍然在电话上,所以我可以将它们写入文件,然后再次获取它们。

任何其他build议如何解决这个问题当然也欢迎:)