我需要一个方法来返回文件夹中上次访问时间的标准偏差。这是代码:
function standardDeviation {
Param(
[Parameter(Mandatory=$true)]
[String]$tPath
)
$moy = moyAge $tPath
$variance = 0
$nbFiles = 1
dir | ForEach-Object {
if (!($_.PsIsContainer)) {
$nbDays = $_.LastAccessTime
$nbDays = $nbDays.Days
$sq = $nbDays - $moy
$sq = $sq*$sq
$variance += $sq
$nbFiles++
}
}
$variance = $variance / $nbFiles
$variance = [math]::sqrt($variance)
}
我不知道为什么,但它总是返回0.有人知道为什么吗?
(moyAge
有效,并返回int(天数))
答案 0 :(得分:1)
您的功能实际上并未返回任何内容,因此任何通话都会"返回" $null
。要么改变
$variance = [math]::sqrt($variance)
到
[math]::sqrt($variance)
或添加一行
$variance
或
return $variance
在功能结束时。
另外,正如@MathiasRJessen指出的那样,DateTime
个对象没有Days
属性。如果您想要今天和特定日期之间的天数差异,则需要先计算一个时间跨度:
$nbDays = ((Get-Date).Date - $_.LastAccessTime.Date).Days