2011-05-25 65 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 
    } 
}