2011-05-25 69 views
4

在一个命令中,是否有更简单的方法在一个命令中将多个属性设置为相同的值?在Powershell中一次设置多个属性

例子:

(gi "c:\test.txt").LastWriteTime = (gi "c:\test.txt").LastAccessTime = (gi "c:\test.txt").CreationTime = Get-date 

我只是好奇,如果有缩短这个语法的方式。

回答

7
"CreationTime","LastWriteTime","LastAccessTime" |% {(gi test.txt).$_ = (get-date)} 
+3

只是为了好玩,你也可以这样做:'$ test.CreationTime,$ test.LastWriteTime,$ test.LastAccessTime = @(获取最新)* 3' – JasonMArcher 2011-06-17 21:02:27

+0

这两个答案都不尽相同在语义上,作为op的例子。 OP保证所有三种道具的同一日期。在你的情况下,并非如此。 foreach-object和* multiplier都有可能翻滚。 – x0n 2012-04-24 03:03:24

0

我用Mjolinor的答案来解决一个问题,我有不正确的日期的上刚刚从远程源下载的文件的稍作修改的版本。我修改了代码,以便在将来必须回来时更清楚地理解(将空白手段更改为完整的命令名称)。

# Correct Access/Create/Write times on transferred files 
ForEach($File in $TransferList) { 
    @("CreationTime","LastAccessTime","LastWriteTime") | ForEach { 
     $(Get-Item $File.Name).$_ = $File.Date 
    } 
}