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
的行之后立即添加这一行来证明这一点。