|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Механизм замены части данных в Powershell |
|
|
PowerShell - Механизм замены части данных в Powershell
|
fascinating rhythm Сообщения: 6491 |
Профиль | Отправить 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 Кто-нибудь знаком с этим механизмом? |
|
------- Отправлено: 21:49, 20-09-2019 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Изменение размера массива, фактически создает новый массив и в этом случае, они уже не будут взаимосвязанными. Для иллюстрации: |
|
------- Отправлено: 22:49, 20-09-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DJ Mogarych, как верно сказал коллега YuS_2, это поведение зависит от того, что происходит в конкретном языке при реализации операции присваивания объектных переменных в том или ином случае. В приведённом Вами случае, надо полагать, что некоей переменной X, стоящей слева от оператора присваивания, присваивается ссылка на ту же самую коллекцию объектов (в памяти), на которую ссылается некая переменная Y, которая находится справа от оператора присваивания. Где-то этим поведением можно управлять явно, где-то — неявно, а где-то — управлять вовсе нельзя (как было задано создателями языка, так, мол, и пользуйте).
|
Отправлено: 23:30, 20-09-2019 | #3 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Получается, что без изменения размеров область памяти одна, и переменные работают как фильтр, а если изменить размер, системе приходится создавать новый объект?
|
------- Отправлено: 07:45, 21-09-2019 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата DJ Mogarych:
К сожалению, что и как реализовано можно только выучить. |
|||
Отправлено: 10:42, 21-09-2019 | #5 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Что вы хотели сказать - непонятно, ибо написали то же самое, что написано в цитате, просто другими словами... нет? |
|
------- Отправлено: 12:28, 21-09-2019 | #6 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
я описал реализацию, а вы - магию очень показательно, как ваше "то же самое" воспринял топикстартер: Цитата DJ Mogarych:
для списков определена операция добавления: и изменение размера ни к каким пересозданиям не приводит |
||
Отправлено: 13:42, 21-09-2019 | #7 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Цитата Busla:
|
|
------- Отправлено: 14:54, 21-09-2019 | #8 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Самомнение у вас раздуто сильно. Если уж беретесь кулаком в грудь стучать, то описывайте не косноязычно: Цитата Busla:
Что это за операция такая "Плюс что-то"? Цитата Busla:
Там самый обычный массив: Цитата DJ Mogarych:
PS_5.1> $src = get-process |select name,product,ProductVersion PS_5.1> $src.gettype() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array - что получите в результате? А потом проверьте: - для конечного пользователя, это суть "изменение" размера массива, хоть и внутри это работает по-другому, о чем и было сказано. Вы же полезли на какой-то рожон и решили поумничать. Бог вам судья, пишите ещё... |
||||
------- Отправлено: 15:13, 21-09-2019 | #9 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
и самомнение раздуто у вас помимо вас тут есть ещё люди, и они тоже что-то пишут списки это пример того, что вывод из ваших слов получился неверный: Цитата DJ Mogarych:
Цитата DJ Mogarych:
Цитата DJ Mogarych:
Операции над списком ссылок сами объекты процессов не затрагивают, точно так же как и изменение отдельного свойства объекта не копирует и не замещает весь объект. Ссылка на него остаётся той же. |
||||
Отправлено: 21:25, 21-09-2019 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|