我有以下简单的脚本:
write-output "Calculating Mod Dates . . ."
$path = 'C:\Users\Server\SERVER\Online'
$files = Get-ChildItem -Path '$path' -include "*"
foreach ($file in $files) {
$ModDate = Get-Item $importfile | Foreach {$_.LastWriteTime}
$CurrentDate = Get-Date
$differece = ($CurrentDate - $ModDate).TotalSeconds
write-output "$importfile - $differece seconds ago."
}
但是,第一个write-output
命令有效,第二个命令无效。这是为什么呢?
答案1
第三行中单引号的使用有误:'$path' 计算结果为字符串文字 $path,这不太可能是实际的路径。
答案2
Poorman 的调试会话方法 - 使用 ISE 和/或 VSCode
您有语法错误,并且其中的内容未填充且位置不对。Write-Output 是默认设置,因此无需指定它。对简单字符串使用单引号,对扩展变量使用双引号,对特定格式场景使用 -f。
# write-output 'Calculating Mod Dates . . .'
'Calculating Mod Dates . . .'
# What I am showing here is called variable squeezing.
# It assigns to the variable while output to the screen so you can see what is being populated.
# remove the far left and far right parens to eliminate all the extra output
($path = 'E:\Temp')
($files = Get-ChildItem -Path $path)
foreach ($file in $files)
{
# This is not doing anything as $importfile is not declared or populate anywhere that you have shown.
# $ModDate = Get-Item $importfile | Foreach {$_.LastWriteTime}
# This should be
($ModDate = (Get-Item -Path $file.FullName).LastWriteTime)
($CurrentDate = Get-Date)
($difference = ($CurrentDate - $ModDate).TotalSeconds)
# write-output "$importfile - $differece seconds ago."
"$($file.Name) - $difference seconds ago."
}
# Results
'Calculating Mod Dates . . .'
Calculating Mod Dates . . .
($path = 'E:\Temp')
E:\Temp
($files = Get-ChildItem -Path $path)
Directory: E:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/14/2019 3:42 PM Reports
-a---- 2/25/2019 10:27 AM 81966 Best-practices.jpg
-a---- 2/25/2019 10:28 AM 82919 computer_speed.jpg
-a---- 3/19/2019 3:34 PM 26 csv1.csv
...
foreach ($file in $files)
{
($ModDate = (Get-Item -Path $file.FullName).LastWriteTime)
($CurrentDate = Get-Date)
($difference = ($CurrentDate - $ModDate).TotalSeconds)
"$($file.Name) - $difference seconds ago."
}
Monday, January 14, 2019 3:42:40 PM
Wednesday, March 27, 2019 11:55:21 AM
6207161.4845608
Reports - 6207161.4845608 seconds ago.
Monday, February 25, 2019 10:27:37 AM
Wednesday, March 27, 2019 11:55:21 AM
2597263.7171875
Best-practices.jpg - 2597263.7171875 seconds ago.
Monday, February 25, 2019 10:28:26 AM
Wednesday, March 27, 2019 11:55:21 AM
2597215.0719793
computer_speed.jpg - 2597215.0719793 seconds ago.
Tuesday, March 19, 2019 3:34:04 PM
Wednesday, March 27, 2019 11:55:21 AM
678077.1822375
csv1.csv - 678077.1822375 seconds ago.
Tuesday, March 19, 2019 3:34:34 PM
Wednesday, March 27, 2019 11:55:21 AM
678047.2243663
...