我有一个脚本在文件即将达到其最大大小时发送电子邮件。在PowerShell脚本中定位测试路径
问题是,我无法实现脚本在给定路径中找不到文件时应该执行的验证检查。
我知道,我应该实现:
if(!(Test-Path $item.Path))
{
"The file " + $item.Name + " is not found! <br />"
}
但我不知道在哪里以精确地放置它(因为我得到错误所有的地方)。
验证码:
我开始从一个配置文件中检索文件:
$list = foreach ($file in $files)
{
$f = Get-Item $file.Path
New-Object -Type PSObject -Property @{
Name = $f.Name
Path = $file.Path
Size = ($f.Length/$byteSize)
}
}
然后我通过文件列表循环,并检查它们的大小:
foreach ($item in $list)
{
if($item.Size -gt $item.TriggerSize -And (Test-Path $item.Path))
{
#Write-Host $item.Name "Warning! File has reached it's max limit ("$item.Size.ToString(".00")"), The max size is" $item.MaxSize". The trigger size is: " $item.TriggerSize "`r`n"
$body +=
"The file " + $item.Name + " is reaching his max size!
<br /> Current size: <b>"+$item.Size.ToString(".00") + " " + $byteSize.Substring(1) + "</b>" +
"<br /> Maximum size: " + $item.MaxSize + " " + $byteSize.Substring(1) + "<br /><br />"
}
}
我尝试在这些地方执行我的错误检查:
$list = foreach ($file in $files)
{
if(!(Test-Path $item.Path))
{
"The file " + $item.Name + " is not found! <br />"
}
$f = Get-Item $file.Path
New-Object -Type PSObject -Property @{
Name = $f.Name
Path = $file.Path
Size = ($f.Length/$byteSize)
}
}
这里
foreach ($item in $list)
{
if($item.Size -gt $item.TriggerSize -And (Test-Path $item.Path))
{
#Write-Host $item.Name "Warning! File has reached it's max limit ("$item.Size.ToString(".00")"), The max size is" $item.MaxSize". The trigger size is: " $item.TriggerSize "`r`n"
$body +=
"The file " + $item.Name + " is reaching his max size!
<br /> Current size: <b>"+$item.Size.ToString(".00") + " " + $byteSize.Substring(1) + "</b>" +
"<br /> Maximum size: " + $item.MaxSize + " " + $byteSize.Substring(1) + "<br /><br />"
}
if(!(Test-Path $item.Path))
{
"The file " + $item.Name + " is not found! <br />"
}
}
但我不断收到,它是在Get-Item
它不能找到一个文件中的错误:
,我用假的路径上写的文件的名称目的: file123.exe
错误(在if(!(Test-Path $file.path))
的线:
Get-Item:找不到路径'file123.exe',因为它不存在。
粘贴在PS控制台中的确切错误,在这里。即使文件存在,你的意思是Get-Item失败吗? '$ files'和'$ list'如何填充? – niksofteng
增加了错误。没有一切正常,但我试图在文件不存在时“捕捉” –
'$ files'和'$ list'的内容是什么?字符串? FileInfo对象?还有别的吗? –