Я использую PowerShell 5.0 и работаю над сценарием, чтобы рекурсивно найти и перечислить все версии log4net.dll в текущем каталоге.
Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\MyJunk\log4net.csv"
Приведенный выше оператор начинает возвращать информацию о версии, как и ожидалось, но выполнение останавливается на первой папке, на доступ к которой у меня нет прав:
Get-ChildItem : The specified network name is no longer available.
At line:1 char:1
+ Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\M ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (J:\ArcPlan_OracleWallet\Production:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
Get-ChildItem : Access is denied
At line:1 char:1
+ Get-ChildItem log4net.dll -Recurse | % versioninfo | Export-Csv "C:\M ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand
Я запускаю Windows PowerShell ISE в качестве администратора. ExecutionPolicy — RemoteSigned, а $ErrorActionPreference — Continue.
В идеале я хотел бы, чтобы сценарий опрашивал ACL каждой папки и обходил все папки (и их содержимое), на доступ к которым у меня нет прав. Однако другим решением будет обход жестко запрограммированных папок. Будучи новичком в PowerShell, я сосредоточился на последнем.
Я попытался обойти первую проблемную папку (по имени), чтобы посмотреть, смогу ли я заставить ее работать, но столкнулся с тем же исключением, и обработка останавливается.
Get-ChildItem log4net.dll -Recurse | Where-Object { $_.FullName -notmatch '\\ArcPlan_OracleWallet\\?'} | export-csv 'C:\MyJunk\log4net.csv'
Спасибо.
The specified network name is no longer available
это сообщение об ошибке неверно или действительно проблема с сетью? Может быть, поэтому выполнение скрипта останавливается? - person sodawillow   schedule 11.05.2017cd production
, я получаю отказ в доступе. ошибка. - person Steve Brueckman   schedule 12.05.2017Get-ChildItem -Force
? - person sodawillow   schedule 12.05.2017Get-ChildItem log4net.dll -Recurse
потерпит неудачу до того, какWhere-Object
сможет отфильтровать нежелательные каталоги. Мое решение глупое. Это слишком долго, чтобы публиковать здесь, поэтому я добавлю его в качестве ответа ниже. - person Steve Brueckman   schedule 13.05.2017