Может кто-нибудь сказать мне, что здесь происходит? Я могу получить -Filter * .log, чтобы работать без проблем.PowerShell Get-ChildItem -Exclude и -Include не работает
PS C:\logs> Get-ChildItem -Filter *.log -Recurse
Directory: C:\logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/19/2016 2:45 PM 0 Moninitor-error-1.log
-a--- 7/19/2016 2:45 PM 0 Moninitor-out-1.log
-a--- 7/19/2016 2:45 PM 0 Watcher-error-3.log
-a--- 7/19/2016 2:52 PM 264810 Watcher-out-3.log
-a--- 7/19/2016 2:48 PM 0 FolderWatcher-error-2.log
-a--- 7/19/2016 2:52 PM 7768537 FolderWatcher-out-2.log
-a--- 7/19/2016 4:34 PM 0 nothing-error.log
-a--- 7/19/2016 4:34 PM 0 nothing.log
-a--- 7/18/2016 2:38 PM 0 log-error-0.log
-a--- 7/19/2016 2:45 PM 0 log-out-0.log
как только я пытаюсь использовать -Include или -Exclude Я получаю ошибку доступа.
PS C:\logs> Get-ChildItem -Exclude *.log -Recurse
Get-ChildItem : Access is denied
At line:1 char:1
+ Get-ChildItem -Exclude *.log -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand
PS C:\logs> Get-ChildItem -Include *.log -Recurse
Get-ChildItem : Access is denied
At line:1 char:1
+ Get-ChildItem -Include *.log -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\...tor-error-1.log:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : GetItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
Get-ChildItem : Access is denied
At line:1 char:1
+ Get-ChildItem -Include *.log -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand
То, что я хотел сделать, это перебрать файлы в этом каталоге и удалять любые, которые старше, чем 0 дней, и не содержат ошибки в имени файла.
Мой текущий сценарий - это.
#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "0"
#----- define folder where files are located ----#
$TargetFolder = "C:\logs"
#----- define extension ----#
$Extension = "*.log"
$Skip = "*error*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-ChildItem -Path $TargetFolder -Filter $Extension -Exclude $Skip -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
write-host "Deleting File $File" -ForegroundColor "DarkRed"
Remove-Item $File.FullName | out-null
}
else
{
Write-Host "No more files to delete!" -foregroundcolor "Green"
}
}
Но в любое время я подал в суд Исключить или включить Это дает мне эти ошибки доступа.
-Recurse на своих работах, а также прекрасно ...
PS C:\Users\Administrator\.pm2\logs> Get-ChildItem -Recurse
Directory: C:\logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/19/2016 2:45 PM 0 Moninitor-error-1.log
-a--- 7/19/2016 2:45 PM 0 Moninitor-out-1.log
-a--- 7/19/2016 2:45 PM 0 Watcher-error-3.log
-a--- 7/19/2016 2:52 PM 264810 Watcher-out-3.log
-a--- 7/19/2016 2:48 PM 0 FolderWatcher-error-2.log
-a--- 7/19/2016 2:52 PM 7768537 FolderWatcher-out-2.log
-a--- 7/19/2016 4:34 PM 0 nothing-error.log
-a--- 7/19/2016 4:34 PM 0 nothing.log
-a--- 7/18/2016 2:38 PM 0 log-error-0.log
-a--- 7/19/2016 2:45 PM 0 log-out-0.log
Вы пробовали 'Get-ChildItem -Recurse' самостоятельно? Похоже, что '-Filter' применяется файловой системой, поэтому вы можете отфильтровывать файлы, к которым у вас нет доступа, прежде чем вы их попросите. – Guvante
да. -Recurse отлично работает сама по себе. Будет редактировать выше – shaun