格式创建日期和修改日期列以显示正常时间

时间:2015-10-27 19:09:47

标签: powershell datetime

我有一个PowerShell脚本,可以将以下所有列表和库中的所有项目和文件输出到CSV:

function Get-DocInventory([string]$siteUrl) {
$site = New-Object Microsoft.SharePoint.SPSite $siteUrl
$web = Get-SPWeb "http://contoso.com/sites/Depts/HTG"
foreach ($list in $web.Lists) {


foreach ($item in $list.Items) {
foreach($version in $item.Versions){
$data = @{
"Version" = $version.VersionLabel
                        "List Name" = $list.Title
                        "Created By" = $item["Author"]
                        "Created Date" = $item["Created"]
                        "Modified By" = $item["Editor"]
                        "Modified Date" = $item["Modified"]
                        "Item Name" = $item.File.Name
                        "URL"=$web.Site.MakeFullUrl("$($web.ServerRelativeUrl.TrimEnd('/'))/$($item.Url)");
}
New-Object PSObject -Property $data | Select "List Name", "Item Name", "Version", "Created By", "Created Date", "Modified By", "Modified Date", "URL"
}
}
$web.Dispose();
}
}



Get-DocInventory  | Export-Csv -NoTypeInformation -Path C:\NewOutput.csv

以下是脚本的示例输出:

enter image description here

问题是列创建日期和修改日期它将时间输出为军事时间。我需要它输出到正常时间并显示它是上午还是下午。有人可以协助添加到脚本中的内容以使其正常工作吗?

2 个答案:

答案 0 :(得分:1)

从以下位置更改此行:

"Created Date" = $item["Created"]

要:

 "Created Date" = ($item["Created"] -as [datetime]).DateTime

我没有方便的SharePoint,但是我可以在这里使用相同的代码将日期格式从14:29转换为2:29 PM。

更好的回答

很少有更好的答案,既易于阅读,也更为技术准确。这是其中一次。

"Created Date" = Get-date -Date $item["Created"] -UFormat "%d/%m/%Y %I:%m %PM"

这将使用Get-Date的-Uformat参数以此格式返回时间:09/09/2013 02:09 PM,该参数允许您使用Unix时间说明符。 Here's a full list.

答案 1 :(得分:0)

输出时,可以使用.Net dateTime对象方法显示所需的日期/时间。有内置和自定义的方式。

这是Technet tip of the week: $date = Get-Date使用System.DateTime对象类型。使用-Format参数访问cmdlet或使用属性和方法通过对象访问格式。