Я могу описать как я бы это сделал: Выгрузил бы все данные из AD в переменные, а затем используя COM объекты Excel записывал бы данные в таблицу дергая их из переменных в соответствии с вашими требованиями. Но это не 2 строчки кода, там скрипт полноценный писать надо...
Дмитрий Шумов, Вот статья описывающая вашу проблему и ее причины https://social.technet.microsoft.com/wiki/contents...
Решение - сначала выгрузить все данные в переменную, а после уже их обрабатывать, тогда ошибки не будет, а не отправлять данные по конвейеру, как сделали вы.
MaxKozlov, При использовании фильтра -FilterXML он работает ОЧЕНЬ быстро, как если бы вы делали фильтр на локальной машине, проверьте сами. У меня он за 30-40 секунд забирает инфу с 80-90 ПК из Security лога
kotjj, Хорошо, но обращаю внимание, что сейчас цифры проставляются в -p8001 в простом порядке, по очереди и в теории могут не совпадать с номером интерфейса, если это необходимо надо дописать чтобы в конец именно номер интерфейса записывался.
kotjj, Поправил скрипт, теперь если несколько IP интерфейсов поднято выводит в файл все, но все еще остается вопрос с параметром -p8001 к каждому следующему просто +1 должно добавляться или записываться в конце индекс интерфейса?
Вам необходимо результат работы ForEach отправить в переменную, а уже ее на вывод в Export-csv, а не каждую запись по очереди отправлять в один и тот же файл. Например так:
$smtp = New-Object net.mail.smtpclient($smtpServer) создается новый класс при обращении к которому инициируется отправка письма с указанными параметрами
Правильно ли я понимаю, скрипт должен запросить у пользователя ввести имя пользователя, далее скрипт ищет в файлике данного пользователя, если находит делает запрос к АД находит адрес почты и отправляет ему на почту инфу с полей Role Monitor и Mouse все верно?
Павел, Прошу прощения за задержку с ответом.
Времени не было толком разобраться с этим вопросом))
Суть в следующем, переменная $input системная и временная и содержит в себе массив данных. По своей сути она похожа на переменную $_ которая используется при обработке каждого элемента массива и очищается сразу же после передачи элемента, так же работает и $input, но она передает весь массив целиком и сразу очищается.
Обратиться к ней несколько раз не получится, но есть вариант загнать ее значение в какую-либо созданную нами переменную и в дальнейшем уже использовать ее.
Простенький пример ниже:
Александр Шурпо, Вот так должно заработать
Перед Get-ADComputer добавлена дополнительная переменная.
При указании Get-ADComputer -SearchBase Powershell не учитывает отдельные параметры переменной и игнорирует .Text в переменной $formTextBox.Text
function Generate-Form {
Add-Type -assembly System.Windows.Forms
Import-Module activedirectory
#Создание формы
$window_form = New-Object System.Windows.Forms.Form
$window_form.Text ='Сбор информации о ПК компании'
$window_form.Width = 500
$window_form.Height = 700
$window_form.AutoSize = $true
Александр Шурпо, Напишите как выглядит сейчас ваша команда которую вы выполняете и содержимое переменной $formTextBox.Text из которой подставляется имя OU