我对power shell很新,我被要求生成一个检查特定文件夹的脚本,并确定是否有任何.xml文件在此文件夹中放置的时间超过2小时。我编写的脚本确实有效但是当它部署到biztalk服务器时它会生成1的退出代码。我不确定这个脚本是否导致了我们现在正在使用该服务器的问题,所以我希望这里有人可能能提供一些见解。
param(
[String]$folderPath,
[int] $hoursToCheck
)
$folderExists = Test-Path $folderPath
If((Get-Date).DayOfWeek.value__ -eq 0 -or (Get-Date).DayOfWeek.value__ -eq 6)
{
exit
}
If($folderExists -eq $false)
{
Send-MailMessage -SmtpServer "mail server" -To "email address" -From "email address" -Subject "email subject." -Body "email message"
}
ElseIf(Get-ChildItem -Path $folderPath | Where-Object {$_.Extension -like "*.xml" -and $_.LastWriteTime -lt (get-Date).AddHours($hoursToCheck)})
{
Send-MailMessage -SmtpServer "email server" -To "address" -From "address" -Subject "email message" -Body "email body"
}
答案 0 :(得分:0)
您还记得输入负值吗?
解决正在发生的事情的一个好方法是使用write-verbose命令。以下是脚本的修改版本,顶部有cmdletbinding(),允许您在运行脚本时使用verbose参数。我已经改变了小时的标志,所以我减去了小时数。您使用-verbose参数运行脚本,例如。\。ps1 C:\ xml_folder 2 -Verbose
[cmdletbinding()]
param(
[String]$folderPath,
[int] $hoursToCheck
)
$folderExists = Test-Path $folderPath
$currentDate=get-date
If((Get-Date).DayOfWeek.value__ -eq 0 -or (Get-Date).DayOfWeek.value__ -eq 6)
{
write-verbose 'exit here'
exit
}
If($folderExists -eq $false)
{
write-verbose 'folder does not exist'
}
ElseIf(Get-ChildItem -Path $folderPath -filter '*.xml' | Where-Object {$_.LastWriteTime -lt $currentDate.AddHours(-$hoursToCheck)})
{
write-verbose 'xml file exists'
}
else
{
write-verbose "no old xml files in folder $folderpath"
}