PowerShell If/Else

PowerShell If/Else,powershell,if-statement,Powershell,If Statement,我正在尝试编写一个脚本,该脚本将查看一个文件夹,%userprofile%\SCRATCH,并为用户提供一个弹出窗口,如果其中有超过两周的文件 这是一个将在登录时运行的脚本。我正在使用C:\Scratch作为测试,但我不知道如何在PowerShell中使用Windows变量 $LogPath = "C:\SCRATCH" # Where to look for files $Daysback = "-14" # Defines file age limit $CurrentDate = Get-

我正在尝试编写一个脚本,该脚本将查看一个文件夹,
%userprofile%\SCRATCH
,并为用户提供一个弹出窗口,如果其中有超过两周的文件

这是一个将在登录时运行的脚本。我正在使用
C:\Scratch
作为测试,但我不知道如何在PowerShell中使用Windows变量

$LogPath = "C:\SCRATCH" # Where to look for files
$Daysback = "-14" # Defines file age limit
$CurrentDate = Get-Date # Gets date created for current files.
$DatetoDelete = $CurrentDate.AddDays($Daysback) # Gets the date of the folder/files

Get-ChildItem $LogPath | Where-Object { $_.LastWriteTime -gt $DatetoDelete

If ($Datetodelete -gt 14)
{
    $a = new-object -comobject wscript.shell
    $b = $a.popup(“Delete Test“,0,”Good Job!”,1)
}

else
{
    $a1 = new-object -comobject wscript.shell
    $b1 = $a.popup(“GTG Test“,0,”Good Job!”,1)
}

有点不对劲,因为无论我在
If
语句中使用什么数字,我都只得到了“Delete Test”。

我假设您在If语句中的意图是使用整数14将
$Datetodelete
与某个日期偏移量进行比较。但是,您实际上是在与整数14进行比较


$Datetodelete
是一个
DateTime
对象,因此,如果我的假设正确,您需要将其与if语句中的另一个
DateTime
对象进行比较,而不是整数。

看起来您在以
Get ChildItem
$env:USERPROFILE开头的行末尾缺少了一个右大括号。$env:USERPROFILE将为您提供windows用户配置文件路径(例如C:\Users\Travis)。我以前在这里看到过$env:USERPROFILE,但是我看到的是“我不知道如何将另一个文件夹附加到USERPROFILE。我需要检查用户配置文件中的SCRATCH文件夹。David,捕捉得不错,但我只是复制和粘贴失败了。$DatetoDelete变量是否是另一个DateTime对象?我就是这么说的
$Datetodelete
是一个
DateTime
对象
$Datetodelete
是您对
$CurrentDate
执行的操作的结果,而该操作又是调用
Get Date
的结果,它返回一个
DateTime
对象。您可以通过将
Write Output$Datetodelete.gettype().Name
行添加到代码中,在分配
$Datetodelete
的行之后立即添加这一行来证明这一点。