Итак, я написал функцию, которая должна делать то, что вам нужно
function Get-ItemTest(){
Param(
[Parameter(ValueFromPipeline, Mandatory=$True)]
[string]$Path,
[Parameter(Mandatory=$True)]
[DateTime]$Limit
)
process{
if(Test-Path $Path){
Get-Item $path | %{
if($_.Creationtime -lt $Limit){
new-object psobject -Property @{Name=$_.FullName;Compliance=1}
}else{
new-object psobject -Property @{Name=$_.FullName;Compliance=0}
}
}
}else{
new-object psobject -Property @{Name=$Path;Compliance=0}
}
return $Response
}
}
Get-ItemTest -Limit (get-date).AddDays(-15) -Path "C:\Windows"
"C:\Windows.old", "C:\Windows","C:\Users" | Get-ItemTest -Limit (get-date).AddDays(-15)
Давайте рассмотрим, что здесь происходит.
В вашем сценарии
$task = ((Get-Item $path | Where-Object { $_.CreationTime -lt $limit }))
Вы уже пытаетесь получить Предмет, прежде чем проверять, работает ли путь.
Вместо этого вы можете инкапсулировать это в IF с помощью Test-Path
if(Test-Path $Path){
Get-Item ...
}else{
"failed"
}