例如,我有几个日期属性,我想从一个文件夹中检索。我想以特定格式格式化它们。我已经找到了一种方法,可以使用calculated property内的Get-Date
来完成此操作。
PS B:\abrabackups> Get-ItemProperty -Path .\AbraSuite01.03.2014 | select Name,@{Name="CreationTime";Expression={($_.CreationTime | Get-Date -format 'ddd MMM dd yyyy HH:mm:ss') + ' GMT-000' }} | ConvertTo-JSON
但是,如果我对剩余的日期属性执行此操作,则必须多次复制并粘贴计算属性的表达式:
@{Name=$some_date_attr;Expression={($_.$some_date_attr | Get-Date -format 'ddd MMM dd yyyy HH:mm:ss') + ' GMT-000' }}
如果格式有任何变化,我必须多次更改它有日期属性。有没有办法将它重构为一个函数,我可以传递一个日期属性,让函数以请求的格式返回它?
答案 0 :(得分:4)
这是基本编程。您所要做的就是使用输入创建一个函数并让它返回一个值。我将假设日期值的数据类型为DateTime
或可转换为一个。
function MyDateFormat([DateTime]$date) {
return (Get-Date $date -format 'ddd MMM dd yyyy HH:mm:ss') + ' GMT-000'
}
(当然,请选择一个更好的名字。这只是一个例子。)然后调用你的函数:
@{Name=$some_date_attr;Expression=(MyDateFormat $_.some_date_attr)}
如果你真的想要它在GMT,你可能想确保它实际上使用UTC time。
答案 1 :(得分:1)
Function Format-Date{
Param([DateTime]$InputDate)
(Get-Date $InputDate -format 'ddd MMM dd yyyy HH:mm:ss') + ' GMT-000'
}
然后只是在那个日期对象或日期格式的字符串(“1/13/14”或“2/14/14 21:12:47”)抛出一个日期对象,然后它会回吐你想要的格式。您可以将该函数命名为更短,以便于粗略使用。