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

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

Ответить
Настройки темы
PowerShell - Механизм замены части данных в Powershell

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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


Конфигурация

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


Уважаемые товарищи, объясните мне, пожалуйста, одну вещь.

Вот есть какие-то данные, к примеру, список процессов, я их помещаю в переменную:
Код: Выделить весь код
$src = get-process |select name,product,ProductVersion |? product -match "операционная система"
Результат:
Name           Product                                  ProductVersion
----           -------                                  --------------
explorer       Операционная система Microsoft® Windows® 10.0.17763.769
smartscreen    Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
SystemSettings Операционная система Microsoft® Windows® 10.0.17763.769
taskhostw      Операционная система Microsoft® Windows® 10.0.17763.769
Дальше я беру и создаю переменную из куска предыдущих данных:
Код: Выделить весь код
$piece = $src |? name -match smart
Результат:
Name        Product                                  ProductVersion
----        -------                                  --------------
smartscreen Операционная система Microsoft® Windows® 10.0.17763.769
Теперь я беру и меняю имя в этом куске:
Код: Выделить весь код
$piece.name = "Умный экран"
Результат:
Name        Product                                  ProductVersion
----        -------                                  --------------
Умный экран Операционная система Microsoft® Windows® 10.0.17763.769
Теперь самое удивительное - если вывести содержимое первой переменной, где содержатся все данные, то имя из того куска, который вычленили, тоже будет изменено:
Код: Выделить весь код
$src
Результат:
Name           Product                                  ProductVersion
----           -------                                  --------------
explorer       Операционная система Microsoft® Windows® 10.0.17763.769
Умный экран    Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
svchost        Операционная система Microsoft® Windows® 10.0.17763.769
SystemSettings Операционная система Microsoft® Windows® 10.0.17763.769
taskhostw      Операционная система Microsoft® Windows® 10.0.17763.769
Это очень удобно - можно, к примеру, менять загруженный в память CSV построчно по определённой выборке, но я не понимаю, почему, изменяя один объект, по идее, являющийся отдельным, меняется другой.

Кто-нибудь знаком с этим механизмом?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:49, 20-09-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Спасибо ВСЕМ, буду осмысливать!

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:05, 22-09-2019 | #11



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

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Busla:
списки это пример того, что вывод из ваших слов получился неверный »
В огороде бузина, а в Киеве - дядька.
Не морочьте голову ни себе, ни другим.
Массивы (а у ТС, как раз System.Array) в powershell имеют ссылочный тип (об этом написано в спецификации), о чем и было сказано в самом начале. Вы же полезли в бутылку, чтобы это как-то оспорить - хотя о чем тут спорить? Вы утверждаете, что-то другое? Вижу, что нет. Тогда к чему был ваш комментарий с цитатой моих слов, вы КО?
Не надо разводить здесь болота, чтобы пояснить эту простую вещь.
И приплетать Си, Паскаль, да и упоминать синтаксис - абсолютно бессмысленно...

PS
А на счет моего самомнения - вы заблуждаетесь, оно у меня в подписи обозначено.

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 22-09-2019 в 14:35.


Отправлено: 14:26, 22-09-2019 | #12



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Вывод данных в cmd из PowerShell без запуска консоли Nolly Скриптовые языки администрирования Windows 3 03-05-2018 20:24
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO Kainos Скриптовые языки администрирования Windows 14 16-04-2015 22:21
PowerShell - PowerShell: импорт данных в AD из файла Perersmeshnik Скриптовые языки администрирования Windows 2 20-02-2014 09:44
PowerShell - [решено] Powershell Изменение данных пользователя во всех OU morrozilla Скриптовые языки администрирования Windows 2 16-04-2013 15:26
PowerShell - [решено] Изменение строки таблицы в базе данных MySQL при помощи Windows PowerShell Dezmond Скриптовые языки администрирования Windows 5 28-09-2012 15:03




 
Переход