|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Get-ChildItem и обратный слэш в пути |
|
PowerShell - Get-ChildItem и обратный слэш в пути
|
Новый участник Сообщения: 43 |
Профиль | Отправить PM | Цитировать Добрый день. Подскажите, пожалуйста, что нужно почитать, чтобы понять причину странного поведения Get-ChildItem?
Сам код: Get-ChildItem mkdir Test1\Test2\Test3 Get-ChildItem -Recurse '.\Test1' Get-ChildItem -Recurse '.\Test2' Get-ChildItem -Recurse '.\Test3' Get-ChildItem -Recurse '.\Test1\' Get-ChildItem -Recurse '.\Test2\' Get-ChildItem -Recurse '.\Test3\' mkdir T\Test2\Test3 Get-ChildItem -Recurse '.\Test1\' Get-ChildItem -Recurse '.\Test2\' Get-ChildItem -Recurse '.\Test3\' Get-ChildItem -Recurse '.\Test1\\' Get-ChildItem -Recurse '.\Test2\\' Get-ChildItem -Recurse '.\Test3\\' mkdir Te\Test2\Test3 Get-ChildItem -Recurse '.\Test1\\' Get-ChildItem -Recurse '.\Test2\\' Get-ChildItem -Recurse '.\Test3\\' PS T:\> Get-ChildItem PS T:\> mkdir Test1\Test2\Test3 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test1' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test2' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 PS T:\> Get-ChildItem -Recurse '.\Test3' Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test1\' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test2\' Get-ChildItem : Cannot find path 'T:\T' because it does not exist. At line:1 char:1 + Get-ChildItem -Recurse '.\Test2\' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (T:\T:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand PS T:\> Get-ChildItem -Recurse '.\Test3\' Get-ChildItem : Cannot find path 'T:\T' because it does not exist. At line:1 char:1 + Get-ChildItem -Recurse '.\Test3\' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (T:\T:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand PS T:\> mkdir T\Test2\Test3 Directory: T:\T\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test1\' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test2\' Directory: T:\T Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 PS T:\> Get-ChildItem -Recurse '.\Test3\' Directory: T:\T\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test1\\' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test2\\' Get-ChildItem : Cannot find path 'T:\Te' because it does not exist. At line:1 char:1 + Get-ChildItem -Recurse '.\Test2\\' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (T:\Te:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand PS T:\> Get-ChildItem -Recurse '.\Test3\\' Get-ChildItem : Cannot find path 'T:\Te' because it does not exist. At line:1 char:1 + Get-ChildItem -Recurse '.\Test3\\' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (T:\Te:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand PS T:\> mkdir Te\Test2\Test3 Directory: T:\Te\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test1\\' Directory: T:\Test1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 Directory: T:\Test1\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> Get-ChildItem -Recurse '.\Test2\\' Directory: T:\Te Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test2 PS T:\> Get-ChildItem -Recurse '.\Test3\\' Directory: T:\Te\Test2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 22.05.2019 9:55 Test3 PS T:\> |
|
Отправлено: 10:03, 22-05-2019 |
Crazy Сообщения: 1167
|
Профиль | Отправить PM | Цитировать А чего тут читать... баг, он и в Индии баг. Программистам надо руки выправлять, которые этот командлет в таком виде выпустили. В PoSh Core этот баг тоже присутствует. В powershell v 2.0 его не было, а как ввели новый принцип определения местоположения, с версии 3.0, так этот баг и поселился
|
------- Последний раз редактировалось YuS_2, 22-05-2019 в 12:27. Отправлено: 12:05, 22-05-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать О, я думал, это все-таки странная фича. Спасибо! А что за новый принцип определения местоположения?
|
Отправлено: 12:32, 22-05-2019 | #3 |
Crazy Сообщения: 1167
|
Профиль | Отправить PM | Цитировать Цитата Knaps:
Если в картинках, то будет нагляднее: Т.е. если командлету указать в качестве пути файл и включить рекурсию, он будет искать этот файл не только в текущем каталоге, но и во всех каталогах, находящихся в текущем каталоге, т.е. рядом с указанным путем к файлу. Если путь абсолютный, то в качестве текущего будет принят родительский каталог указанного файла: D:\TEST\test1.ext - здесь, это каталог TEST и все каталоги, находящиеся в нем будут просмотрены рекурсивно. - так работает командлет начиная с версии powershell 3.0 А в версии 2.0, указанный файл ищется по указанному пути и только, даже если присутствует рекурсия, никакие соседние каталоги не просматриваются... |
|
------- Последний раз редактировалось YuS_2, 22-05-2019 в 14:59. Отправлено: 14:44, 22-05-2019 | #4 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать Спасибо, теперь понял, что имели в виду.
|
|
Отправлено: 22:35, 22-05-2019 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Отсечение пути.Как?Или получение относительного пути. | nfs911 | Скриптовые языки администрирования Windows | 12 | 19-05-2018 11:29 | |
VBS/WSH/JS - Срипт копирования пути к файлу\папке и вставка пути в письмо Outlook | trlhrn | Скриптовые языки администрирования Windows | 0 | 07-08-2015 16:21 | |
Разное - Символы СЛЭШ | pashtetadomanet | Хочу все знать | 14 | 24-02-2014 04:00 | |
PowerShell - [решено] Помощь с сортировкой в get-childitem | kelevara | Скриптовые языки администрирования Windows | 6 | 07-05-2013 07:07 | |
обратный прием | Jammer | Защита компьютерных систем | 4 | 02-12-2007 12:03 |
|