Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Глюк в powershell?

Ответить
Настройки темы
PowerShell - Глюк в powershell?

Пользователь


Сообщения: 74
Благодарности: 1

Профиль | Отправить PM | Цитировать


Пишу простенький скрипт, но уже голову сломал, не понимаю откуда берутся нулевые элементы в переменной $paths
Часть кода
Код: Выделить весь код
$drives = [system.IO.driveinfo]::GetDrives()
$paths = @()
foreach ($drive in $drives){
	if ($drive.DriveType -eq "Fixed" -and $drive.Name -ne "N:\"){
		$paths += Get-ChildItem $drive -filter zzz
	}
}
Т.е. в $paths должны попасть все файлы и папки на дисках по фильтру zzz - по факту попадает то что попадает под фильтр и какой-то нулевой элемент. В данном примере под фильтр вообще ничего не должно попасть, однако $paths.length возвращает 2. Просто $paths[0] ничего не выводит. Не понимаю в чем дело

Код: Выделить весь код
PS N:\Ariadna> $paths.length
2

PS N:\Ariadna> $paths[0]

PS N:\Ariadna> $paths[1]

PS N:\Ariadna> $paths[0] -eq $NULL
True

PS N:\Ariadna> $paths[1] -eq $NULL
True

PS N:\Ariadna> $paths[2] -eq $NULL
True

Отправлено: 11:02, 16-02-2012

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Т.е вы со 100% заверяете,что на каждом диске у вас есть файлы,которые попадают под шаблон?

$paths = @()
$paths += Get-ChildItem C:\ -Filter "TakogoFiltraNet"
$paths += Get-ChildItem C:\ -Filter "ITakogoFiltraTogeNEt"

Код: Выделить весь код
PS >  $paths.count
2
PS >  $paths[0]
PS >  $paths[0] -eq $null
True
$paths = [system.IO.driveinfo]::GetDrives() | where {$_.DriveType -eq "Fixed" and $_.Name -ne "N:\"} | Get-ChildItem -Filter zzz

Последний раз редактировалось Kazun, 16-02-2012 в 12:36.


Отправлено: 12:27, 16-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 74
Благодарности: 1

Профиль | Отправить PM | Цитировать


вы не поверите, но
Код: Выделить весь код
$paths = @()
$paths += Get-ChildItem C:\ -Filter "TakogoFiltraNet"
$paths += Get-ChildItem C:\ -Filter "ITakogoFiltraTogeNEt"

PS C:\Users\truealex> $paths.length
2

PS C:\Users\truealex> $paths[0]

PS C:\Users\truealex> $paths[1]

PS C:\Users\truealex> $paths.count
2
я в шоке

Код: Выделить весь код
$paths = @()

$paths +=Get-ChildItem C:\

$paths

    Каталог: C:\


Mode                LastWriteTime     Length Name                                                                                                                                                                                 
----                -------------     ------ ----                                                                                                                                                                                 
d----        01.02.2011     15:22            app                                                                                                                                                                                  
d----        13.04.2011     13:59            avn_clb                                                                                                                                                                              
d----        09.01.2012     17:36            Intel                                                                                                                                                                                
d----        14.07.2009      7:20            PerfLogs                                                                                                                                                                             
d-r--        30.01.2012     11:49            Program Files                                                                                                                                                                        
d-r--        30.01.2012     11:51            Program Files (x86)                                                                                                                                                                  
d-r--        06.02.2012     17:57            Users                                                                                                                                                                                
d----        13.02.2012     19:03            Windows                                                                                                                                                                              
-a---        10.01.2012     17:06        149 ElsoftOffice.log                                                                                                                                                                     


$paths.count
9

Последний раз редактировалось TrueAlex, 16-02-2012 в 12:43.


Отправлено: 12:37, 16-02-2012 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


В чего не поверю? Здесь нет "глюка" у PowerShell,он выполняет в данном случае ,что Вы ему задали.Сохранить в массив пустой объект и он и сохраняет,проблем здесь не вижу.

Отправлено: 12:46, 16-02-2012 | #4


Пользователь


Сообщения: 74
Благодарности: 1

Профиль | Отправить PM | Цитировать


эээ, т.е. хотите сказать, что вот так "$paths += Get-ChildItem C:\ -Filter "TakogoFiltraNet"" он сохранит пустой объект? Да уж.... микрософт впереди планеты всей А можно ли этого избежать и, собственно, получить то что хотелось, а именно, список который совпадает с фильтром?

Отправлено: 13:30, 16-02-2012 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Виноват не Microsoft,а всего лишь Ваша некомпетентность и лень.

Выше я уже приводил команду,но вы же не читаете полностью,что Вам пишут.

$paths = [system.IO.driveinfo]::GetDrives() | where {$_.DriveType -eq "Fixed" -and $_.Name -ne "N:\"} | Get-ChildItem -Filter zzz

Отправлено: 13:50, 16-02-2012 | #6


Пользователь


Сообщения: 74
Благодарности: 1

Профиль | Отправить PM | Цитировать


Этот код, судя по всему, вы добавили уже позже, редактируя свое сообщение, т.к. я его действительно сначала не заметил.

PS: я сюда за помощью обратился, хотите помочь - помогайте, а не хотите - молчите, ваши рассуждения по поводу моей некомпететности и лени считаю оскорблением.

Отправлено: 14:16, 16-02-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Глюк в powershell?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Windows PowerShell shoot Программное обеспечение Windows 13 27-11-2011 02:23
PowerShell - PowerShell и Excel tarasov.evgeny Скриптовые языки администрирования Windows 11 15-11-2011 16:27
PowerShell - Powershell и Access tarasov.evgeny Скриптовые языки администрирования Windows 2 09-06-2011 17:06
Вопрос - applocker powershell extorhost Защита компьютерных систем 0 12-08-2010 17:16
Разное - PowerShell Butunin Klim Программирование и базы данных 1 31-07-2008 18:39




 
Переход