AlexNov001,
Мда... Переменные ушли, легче не стало.
Вопрос-то мой был простой - "Откуда (вернее - как?) берутся данные?"
Если предположить, что есть есть объект с атрибутами Name, Object, Quantity и массив, являющийся перечнем для Object, можно перебирать массив и для каждого элемента массива фильтровать объекты по атрибуту "Object", создавать новый объект и добавлять в него атрибуты ( Add-Member -MemberType NoteProperty -Name 'Name' -Value $Quantity). Тогда результатом будем набор объектов, который легко можно выгрузить в CSV (или вот ещё), правда там столбцы получаться как name, а строки как object.
Но это все не важно.
В текущем описании задачи есть объект $data_cur, у которого 3 атрибута name, object и quantity, которые, по всей видимости являются (каждый из них) массивами, никак не связанными друг с другом.
И, поэтому варианты следующие:
описание задачи неверно;
данные собираются неверно;
может я что-то упускаю.
Третий пункт добавил, так как телепатические способности у меня отсутствуют...
Можно начать с простого:
когда $data_cur уже сформирован. надо добавить
$data_cur | Get-member
$data_cur.GetType()
и выложить сюда результат.
AlexNov001,
После описания яснее не стало, скорее - наоборот...
Данные по количеству к чему привязаны? К name или к object?
А так, фраза "данные собираются циклами" и 3 загадочные переменные намекают на то, что там жуткая жуть твориться. Без описания исходных данных трудно что-то дельное посоветовать...
Я бы шёл таким путем:
Строка в таблице может быть объектом с атрибутами Name, object 1, object 2,..., object n.
Значит надо получить массив таких объектов и экспортировать в тот же CSV.
Откуда (вернее - как?) берутся данные, из описания непонятно. var1, var2, var3 - они как-то связаны?
Данные в п. 2 к object привязаны или к name?
Digsecman,
А если вот так (пример):
$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"').Name | Resolve-DnsName
Настойчивость - это, наверное, хорошо.
А игнорирование советов - думаю, плохо. :) Digsecman,
В какой момент происходит присваивание значения переменной $computers ?
Digsecman,
раз у вы в самом начале пути, я бы сразу посмотрел на WinGet - минус сторонний компонент и скрипт проще получиться.
А так, присоединяюсь к сергей кузьмин - надо разбираться начинать с простых вещей:
1. Посмотреть, что в Windows EnevtLog по запуску скрипта.
2. Попробовать запускать скрипт, который единственное что делает - пишет в файл.
3. Когда появиться уверенность, что скрипт запускается - добавить что-то из интересующей логики.
4. и т.д.
P.S. - Если мысль идет от "все компьютеры", тогда, действительно, зачем ставить софт при входе пользователя? Тем более, не весь софт можно поставить с правами пользователя...
Исмат Гайибов, если это все не для саморазвития, то лучше воспользоваться советом Alexey Dmitriev .
Для NTFSSecurity есть достаточно подробное описание с примерами.
P.S. - Powershell позволит автоматизировать задачи назначения прав, но саму задачу надо "решить" без него. Есть графический интерфейс, который наглядно представляет текущие разрешения, унаследованные в том числе. Это позволит подойти к ответу на вопросы "как правильно убрать доступ всем пользователям?" и т.п. А потом уже можно описывать это все на Powershell.
А как часто будет требоваться перезапуск, есть предположение?
В Windows есть службы с базовым механизмом перезапуска при "падении" (перезапуск службы, запуск другой программы, перезагрузка системы).
"php-скрипт как служба Windows", правда, звучит странновато... Думаю, можно сделать с помощью NSSM или, ка-то встречалось в Интернете приложение именно для php-скриптом (но. кажется было платным).
Вообще, мне кажется можно набросать скрипт на Powershell, который проверяет запущенные процессы в случае отсутствия нужного (или нужного их количества) запускает новый процесс.
А запуск самого скрипта, например, через планировщик заданий.
Думаю, это относиться к маленьким компаниям, где нет потребности в IT, кроме как обеспечить работу офисного пакета и никакого "IT-отдела" в помине нет. Причём, это же не только к IT относится: работа бухгалтера в компании, где всего один бухгалтер, отличается от работы бухгалтера, где их в отделе 20 человек.
LaP1GEON, ярлыки можно расположить в "Мой компьютер", если сделать их как сетевые размещения. Запрос в Google "network locations windows 10" должен помочь.
Risurects, есть шанс, что "сложный путь" оказывается проще других вариант. С учётом того, что вопрос с тегом "Windows", как может выглядить скрипт на Powershell, решающий задача, я представил ещё пока читал вопрос. А вот где искать этот функционал в файловых менеджерах или какими словами спрашивать у Google о других программах для этого - до сих пор не представляю.
Хотя, в первую очередь нужно дождаться уточнения условий задачи...
Мда... Переменные ушли, легче не стало.
Вопрос-то мой был простой - "Откуда (вернее - как?) берутся данные?"
Если предположить, что есть есть объект с атрибутами Name, Object, Quantity и массив, являющийся перечнем для Object, можно перебирать массив и для каждого элемента массива фильтровать объекты по атрибуту "Object", создавать новый объект и добавлять в него атрибуты ( Add-Member -MemberType NoteProperty -Name 'Name' -Value $Quantity). Тогда результатом будем набор объектов, который легко можно выгрузить в CSV (или вот ещё), правда там столбцы получаться как name, а строки как object.
Но это все не важно.
В текущем описании задачи есть объект $data_cur, у которого 3 атрибута name, object и quantity, которые, по всей видимости являются (каждый из них) массивами, никак не связанными друг с другом.
И, поэтому варианты следующие:
Третий пункт добавил, так как телепатические способности у меня отсутствуют...
Можно начать с простого:
когда $data_cur уже сформирован. надо добавить
$data_cur | Get-member
$data_cur.GetType()
и выложить сюда результат.