2013-07-05 2 views
2

Если я полностью рекурсивный поиск диска в PowerShell с помощью команды ls и установите ErrorAction в SilentlyContinue это все еще бомбы, когда он попадает в папку не может получить доступ.Ls -recurse -ErrorAction SilentlyContinue не работает

Я могу обернуть звонок в try catch, но это не помешает прекращению поиска, оно просто проглотит ошибку.

Пример:

ls -Include msdeploy.exe -Recurse -ErrorAction SilentlyContinue; 

Результаты в:

PS C:\> ls msdeploy.exe -Recurse -ErrorAction SilentlyContinue 


    Directory: C:\Program Files\IIS\Microsoft Web Deploy V2 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   4/1/2011 8:17 PM  165704 msdeploy.exe 


    Directory: C:\Program Files\IIS\Microsoft Web Deploy V3 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   7/12/2012 9:13 AM  197504 msdeploy.exe 


    Directory: C:\Program Files (x86)\IIS\Microsoft Web Deploy V2 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   4/1/2011 8:17 PM  169800 msdeploy.exe 


    Directory: C:\Program Files (x86)\IIS\Microsoft Web Deploy V3 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   7/12/2012 9:13 AM  201600 msdeploy.exe 
ls : Access is denied 
At line:1 char:1 
+ ls msdeploy.exe -Recurse -ErrorAction SilentlyContinue 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException 
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand 

Постараюсь глобальную переменную, я думал, что есть другой способ.

+3

Код в письменном виде отлично подходит для меня ... он вообще не показывает результатов? – JNK

+1

Невозможно воспроизвести его. Отправьте точное сообщение об ошибке. Выполняется ли команда по-разному, когда вы устанавливаете '$ ErrorActionPreference =" молча продолжить "? Также обратите внимание, что даже это не поймает всевозможные ошибки (см. [Здесь] (http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/08/hey-scripting-guy-march- 8-2010.aspx)). –

+1

@Kevin_ 'ls' является [псевдоним] (http://technet.microsoft.com/en-us/library/ee692685.aspx) для' Get-ChildItem'. В этом нет ничего хитрого. –

ответ

2

Попробуйте установить $ErrorActionPreference = "silentlycontinue" вместо параметра -ErrorAction SilentlyContinue. Кто-то недавно упомянул меня, что иногда может срабатывать -EA.

+0

Хм. Как оказалось, это не работает в моем скрипте. Он работал в командной строке, но мой скрипт по-прежнему возвращается раньше, как только он попадает в папку, к которой он недоступен. Я чувствую ошибку подключения. –

+0

Следует добавить, что он по-прежнему не работает, когда скрипт работает под агентом сервера сборки, даже если он работает, когда вы запускаете «обычно» в командной строке PS. –

0

Итак, Ансгару удалось заставить замолчать ошибку, но в сценарии ошибка эффективно молча приостановила выполнение.

Я ложился спать в плохом настроении после того, как стал с ним никуда.

Я вернулся сегодня утром в RDP на виртуальную машину Windows Server 2008 R2, и он был перезагружен с момента запуска Windows Update. Еще более удивительно, что проблема загадочно исчезла!

Время невероятно. Это были обновления:

Product 
------- 
Security Update for Microsoft .NET Framework 4.5 on Windows 7, Vista, Windows Server 2008, Windows Server 2008 R2 for x64 (KB2840642) 
Windows Malicious Software Removal Tool x64 - July 2013 (KB890830) 
Security Update for Windows Server 2008 R2 x64 Edition (KB2835361) 
Security Update for Microsoft .NET Framework 3.5.1 on Windows 7 and Windows Server 2008 R2 SP1 for x64-based Systems (KB2840631) 
Security Update for Windows Server 2008 R2 x64 Edition (KB2834886) 
Security Update for Windows Server 2008 R2 x64 Edition (KB2850851) 
Security Update for Microsoft .NET Framework 3.5.1 on Windows 7 and Windows Server 2008 R2 SP1 for x64-based Systems (KB2833946) 
Cumulative Security Update for Internet Explorer 10 for Windows Server 2008 R2 Service Pack 1 for x64-based Systems (KB2846071) 
Security Update for Microsoft .NET Framework 3.5.1 on Windows 7 and Windows Server 2008 R2 SP1 for x64-based Systems (KB2844286) 
Security Update for Microsoft .NET Framework 3.5.1 on Windows 7 and Windows Server 2008 R2 for x64-based Systems (KB2832414) 

Однако, следует отметить, что это может быть акт перезагрузки (это сервер), который мог бы заменить библиотеки DLL, которые в ожидании от обновлений устанавливает давно.