powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Powershell как добавить в массив строк новый элемент
6 сообщений из 6, страница 1 из 1
Powershell как добавить в массив строк новый элемент
    #39521819
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Помогите, пожалуйста, исправить скрит.
Задача считать файла с флешки и найти в каждом строку начинающуюся с "30414".
Каждое значение занести в массив.
Проблема в том, что массив в итоге становится одной строкой из пяти элементов.

Пробовал и
Код: powershell
1.
 $my30414 = $my30414 + $myRaw.SubString($myRaw.IndexOf("=")+1, 20) 


и
Код: powershell
1.
 $my30414 += $myRaw.SubString($myRaw.IndexOf("=")+1, 20) 



Пытаюсь перебрать массив в цикле - получается только 1 итерация.

Заранее благодарю

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
cls
[String]$my30414 = #@()

$DriveList = Get-WmiObject Win32_logicaldisk -filter "DriveType = '2'"
If ($DriveList -eq $NULL) 
{ 
    write-host "No flash drives"
    break 
}  
Else
{    
#if just 1 flash drive found 
    If ($DriveList[-1] -eq $NULL)
    {
        $myFiles = @(get-childitem -Path $DriveList.DeviceID -Filter *.txt | Where {!$_.PSIsContainer})
        If ($myFiles -ne $NULL)
        {
            $i = 0
            ForEach ($myFile in $myFiles)
            {
                $myPath = Join-Path -Path $DriveList.DeviceId -ChildPath $myFile
                                                
                $myRaw = Select-String -Path $myPath -Pattern "30414"
                $my30414 = $my30414 + $myRaw.SubString($myRaw.IndexOf("=")+1, 20)

                $i += 1                
            }
        }        
    }
#if more than 1 flash drive found   
    Else
    {
        ForEach ($oneDrive in $DriveList)
        {
            $myFiles = @(get-childitem -Path $oneDrive.DeviceID | Where {!$_.PSIsContainer})
            If ($myFiles -ne $NULL)
            {
                ForEach ($myFile in $myFIles)
                {

                }
            }
        }
    }
            
    write-host "end_Of_script"  
    $my30414
}
...
Рейтинг: 0 / 0
Powershell как добавить в массив строк новый элемент
    #39521859
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
# Создать пустой массив

$my30414 = "()

# Добавление в массив элементов

ForEach ...
  ...
    $my30414 += $myRaw.SubString($myRaw.IndexOf("=")+1, 20)
  ....
Next
...
Рейтинг: 0 / 0
Powershell как добавить в массив строк новый элемент
    #39521863
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, пунто подгадил...
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
# Создать пустой массив

$my30414 = @()

# Добавление в массив элементов

ForEach ...
  ...
    $my30414 += $myRaw.SubString($myRaw.IndexOf("=")+1, 20)
  ....
Next
...
Рейтинг: 0 / 0
Powershell как добавить в массив строк новый элемент
    #39521891
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, но как мне кажется, я так и делаю.
В изначальном коде была закомментирована строка создания массива, так как я пробовал создать его другим способом.
Нижеприведенный код выдает результат в виде одной строки

3041481060000000000330414810138000000002304148109000000000013041481013800000000230414810600000000003

и одной итерации в цикле в конце (значение $i при выводе = 1)

Т.е. выход в ISE следующий
end_Of_script
3041481060000000000330414810138000000002304148109000000000013041481013800000000230414810600000000003
Counter value 1
3041481060000000000330414810138000000002304148109000000000013041481013800000000230414810600000000003
End 1

Еще раз спасибо

$my30414 = @()

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
CLS
$my30414 = @()
$DriveList = Get-WmiObject Win32_logicaldisk -filter "DriveType = '2'"
If ($DriveList -eq $NULL) 
{ 
    write-host "No flash drives"
    break 
}  
Else
{    
#if just 1 flash drive found 
    If ($DriveList[-1] -eq $NULL)
    {
        $myFiles = @(get-childitem -Path $DriveList.DeviceID -Filter *.txt | Where {!$_.PSIsContainer})
        If ($myFiles -ne $NULL)
        {
            $i = 0
            ForEach ($myFile in $myFIles)
            {
                $myPath = Join-Path -Path $DriveList.DeviceId -ChildPath $myFile
                                                
                $myRaw = Select-String -Path $myPath -Pattern "30414"
                $my30414 += $myRaw.SubString($myRaw.IndexOf("=")+1, 20)

                $i += 1                
            }
        }        
    }
#if more than 1 flash drive found   
    Else
    {}
    write-host "end_Of_script"  
    write-host $my30414

    $i=0
    ForEach ($oneAc in $my30414)
    { 
    $i += 1
    write-host "Counter value", $i
    write-host $oneAc 
    }
    write-host "End ", $i
}
...
Рейтинг: 0 / 0
Powershell как добавить в массив строк новый элемент
    #39521894
microdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пробовать в "командной строке" PowerShell, то работает как надо

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
PS C:\Users\...> $my30414 = @()
PS C:\Users\...> $my30414 += "30414_1"
PS C:\Users\...> $my30414 += "30414_2"
PS C:\Users\...> $my30414 += "30414_3"
PS C:\Users\...> $my30414
30414_1
30414_2
30414_3

А в скрипте почему-то все складывается в одну длинную строку.
...
Рейтинг: 0 / 0
Powershell как добавить в массив строк новый элемент
    #39522012
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
microdinНижеприведенный код выдает результат в виде одной строкиПроверьте длину. Для страховки - и в шелле.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Powershell как добавить в массив строк новый элемент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]