我有许多用于记录的脚本中使用的以下变量:
$uDate = get-date -format "ddd MM/dd/yyyy HH:mm:ss"
唯一的问题是日期永远不会刷新,只显示声明变量的日期/时间。
答案 0 :(得分:5)
不知道更多,也许“现在”声明一个新定义的函数?
function now()
{
get-date -format "ddd MM/dd/yyyy HH:mm:ss"
}
甚至直接使用C#:
[datetime]::Now.ToString("ddd MM/dd/yyyy HH:mm:ss")
答案 1 :(得分:3)
不应该使用变量。变量应该存储数据,而不是采取行动。因此,正确的方法是创建一个以所需格式返回当前日期的函数。
但是......如果你想要真正破解,你可以通过在变量的所有读取上设置断点来实现。 -offction断点会将变量的值重置为当前时间。
$rightNow = Get-Date
Set-PSBreakpoint -Variable rightNow -Mode Read -Action { $global:rightNow = Get-Date }
...测试
PS > $rightnow
Monday, August 20, 2012 11:46:04 AM
PS > $rightnow
Monday, August 20, 2012 11:46:09 AM
答案 2 :(得分:1)
Greg Wojan是对的,为了给你最好的答案,我们需要知道你真正想要完成的事情。我假设您想要一个变量,每次尝试使用它时都会神奇地更新自己。据我所知,这在PS中是不可能的。我能想到的最接近的是做这样的事情:
$uDate = {get-date -format "ddd MM/dd/yyyy HH:mm:ss"}
"The date now is $($uDate.Invoke())"
Start-Sleep -Seconds 30
"And now it is $($uDate.Invoke())"
答案 3 :(得分:1)
有一种方法可以在每次使用时自动更新变量。在PoshCode查看New-TiedVariable。乔尔贝内特继续留下深刻印象。 :-)它有其局限性,有记录,但确实很好用。
基本上它只是一个包含@latkin提供的答案的函数。