Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 3

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Открыть новую тему     Написать ответ в эту тему

ShriEkeR



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части: 1 | 2
 
   

Коллеги-администраторы...

 
Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на которые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.

 
    Внимание   !  !  !  

  • Поскольку данный топ весьма не мал, не забывайте  использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

  • Дабы не раздувать топ,  примеры своих  скриптов  заключаем в тег  "more"

Консольные команды. Командный интерпретатор

Windows Script Host (WSH) &  VBScript  &  JScript


Вышеперечисленные буки можно  взять здесь

    ТOOLS :
  1. Autoit+readme.rus
  2. Scriptologic
  3. AutoMate
  4. KIXTART
  5. nnCron-Планировщик с поддержкой скриптового языка --  РЕКОМЕНДУЮ
  6. WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
  7. 4dos/4nt -- отличная замена стандартного коммандного интерпретатора  
  8. JudoScript - java подобный скриптовый язык с исходниками
  9. VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

    Дружественные темы :
  1. Автоматическая (unattended) установка Windows
  2. Интересные команды при работе с Linux
  3. Отличный сайт по скриптингу, и не только
  4. Использование KIX
  5. Использование WMI
  6. Программирование "удобняшек" на VBScript

 
Подробнее...
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
Jovanotti

Всего записей: 6382 | Зарегистр. 27-09-2004 | Отправлено: 21:07 23-05-2011 | Исправлено: Jovanotti, 23:29 21-03-2012
igor me v2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
найденные на форумах "умные" инструкции,

Умную инструкцию поотключать на всех ОС от 7 и выше (или даже от висты) автоопределение скорости сети, "чимни" и прочую хрень, "оптимизирующую сеть". Особенно если вышеуказанных проблем не бывает между компами на XP...
Кстати...а что там у нас с мастер-браузером, он всегда и везде доступен? А рабочая группа одна на всех?
 
Добавлено:
LevT

Цитата:
Майки уже 20 лет назад поняли

ээээээыыыыы...в 2000 году??? Шутить изволите?

Всего записей: 4148 | Зарегистр. 27-03-2016 | Отправлено: 22:59 18-02-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor me v2
 
Да. Примерно тогда они начали разрабатывать висту, в надежде избавиться от нетбиоса и WINS
Но обкурившася "сетевым окружением" клиентура не дала им это сделать
 
 
Добавлено:
Клиентура насрала в гугле и на форумах килотоннами мануалов про мастер-браузер и т.п. гавно...
Линуксоиды тоже 15 лет боролись с глюкодромом самбы, всё ради сраного этого "Сетевого окружения" (чтобы типа было "все как у виндузятников")
 
 
Добавлено:
likbez
 
Кажется, брат по разуму нарисовался
Он поможет.

Всего записей: 14882 | Зарегистр. 14-10-2001 | Отправлено: 23:30 18-02-2020
igor me v2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
брат по разуму  

Я уже бывший сисадмин Сейчас "на дому" чиню электронику, гоняю аналоговый звук, чиню и восстанавливаю усилки, "вертушки", бобинники и т. п.

Всего записей: 4148 | Зарегистр. 27-03-2016 | Отправлено: 00:19 19-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе утро.
Коллеги, подскажите как красиво написать скрипт в повершелле для домена с выводом даты окончания срока действия пароля.
 
Вот боевой скрипт, который служит для меня основой для вывода результатов
1.  
Get-ADUser -filter * -properties PasswordExpired, Company, PasswordLastSet, PasswordNeverExpires, LastLogonDate -SearchBase ‘OU=ваша компания ,DC=loc’ | where {$_.Enabled -eq $true} |sort-object PasswordLastSet |FT Name, Company, PasswordExpired, PasswordLastSet, PasswordNeverExpires, LastLogonDate -Autosize
 
2. Вот боевая версия скрипта, которая показывает дату окончания срока действия пароля
Get-ADUser -SearchBase "OU=ваша компания,DC=loc" -f '*' -Properties passwordlastset | foreach {write-host 'пароль пользователя' ($_.name) 'истечет' ($_.passwordlastset).Adddays(90)}
Но тут меня не устраивает формат вывода данных.
 
Просьба  подсказать, как вывести работу скрипта 2 аналогично виду результату работы скрипта из примера 1.
Спасибо.

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 10:12 24-02-2020
U2007

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
 
Get-ADUser -SearchBase "OU=ваша компания,DC=loc" -f '*' -Properties passwordlastset | select @{N="пароль пользователя"; E={$_.name}}, @{N="истечет"; E={($_.passwordlastset).Adddays(90)}} | ft -AutoSize
 
Добавлено:
в конце можно попробовать | Out-GridView

Всего записей: 298 | Зарегистр. 25-11-2008 | Отправлено: 11:06 24-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U2007
Спасибо, очень четко работает ваш скрипт.  
 
Добавлено:
Сейчас попытаюсь поставить сортировку по дате окончания в вашем скрипте,U2007 .
Вот итог
Get-ADUser -SearchBase "OU=ваша компания,DC=loc" -f '*' -Properties passwordlastset | select @{N="пароль пользователя"; E={$_.name}}, @{N="истечет"; E={($_.passwordlastset).Adddays(90)}} | sort-object "истечет" | ft -AutoSize

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 11:12 24-02-2020 | Исправлено: caspara, 11:21 24-02-2020
Vby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
 
Get-ADUser -filter * -properties PasswordExpired, Company, PasswordLastSet, PasswordNeverExpires, LastLogonDate -SearchBase ‘OU=ваша компания,DC=loc’ | where {$_.Enabled -eq $true} |sort-object PasswordLastSet |FT Name, Company, PasswordExpired, PasswordLastSet, @{Label="истечет"; Expression={$_.PasswordLastSet.Adddays(90)}}, PasswordNeverExpires, LastLogonDate -Autosize

Всего записей: 772 | Зарегистр. 16-09-2004 | Отправлено: 11:27 24-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U2007
не знал до вашего поста про красоту | Out-GridView  
 
 
Добавлено:
Vby
Ваш вариант тоже очень хорош собой!
 
2_всем.
Спасибо за ваши 2 варианта скрипта, все четко работает.
 
Итак, выложу свои варианты скриптов, которые у меня используются в домене
 
1. поиск забаненных пользователей
Search-ADAccount -LockedOut -searchbase "OU=ваша компания,DC=loc" |FT name, ObjectClass -A
 
2. Список активных пользователй, которые вводят неправильно пароль  
Get-ADUser -filter { -not (BadPwdCount -eq "0") -and (enabled -eq $true)} -Properties BadPwdCount, Company -searchbase "OU=ваша компания,DC=loc" |sort-object BadPwdCount |ft Name, BadPwdCount, Company -AutoSize
 
3. поиск пользователей, у которых через 20 дней истечет пароль (из максимальных 90)
$70_Days = (Get-Date).adddays(-70)                                              
Get-ADUser -filter {(passwordlastset -le $70_days)} -properties Company, PasswordLastSet -SearchBase ‘OU=ваша компания,DC=loc’ | sort-object PasswordLastSet | select-object Name, Company, PasswordLastSet
 
4. поиск отключенных пользователей
Search-ADAccount -AccountDisabled -searchbase "OU=ваша компания,DC=loc" |FT name
 
5. Поиск пользователей, у которых истекает срок действия пароля согласно политике домена
а) для 1 пользователя  
(Get-ADUser USERNAME -Properties PasswordLastSet).PasswordLastSet + $(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
б) для всей ветки ‘OU=ваша компания,DC=loc’
вариант 1)  
Get-ADUser -SearchBase "OU=ваша компания,DC=loc" -f '*' -Properties passwordlastset | select @{N="пароль пользователя"; E={$_.name}}, @{N="истечет"; E={($_.passwordlastset).Adddays(90)}} | sort-object "истечет" | ft -AutoSize
вариант 2) -- самое полное "итого"  
Get-ADUser -filter * -properties PasswordExpired, Company, PasswordLastSet, PasswordNeverExpires, LastLogonDate -SearchBase ‘OU=ваша компания,DC=loc’ | where {$_.Enabled -eq $true} |sort-object PasswordLastSet |FT Name, Company, PasswordExpired, PasswordLastSet, @{Label="истечет"; Expression={$_.PasswordLastSet.Adddays(90)}}, PasswordNeverExpires, LastLogonDate -Autosize
 
6. Список пользователей, неактивных в течении 70 дней из 90 (согласно политике домена, как у меня)
$timespan = New-Timespan –Days 70
Search-ADAccount -AccountInactive -TimeSpan $timespan -searchbase "OU=ваша компания,DC=loc"  | sort-object LastLogonDate | select-object Name, LastLogonDate
 
Если кому пригодится.

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 11:34 24-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно еще вопрос по скриптам в повершелле.
Вот почти вчерашний скрипт
==
Get-ADUser -filter {-not (userAccountControl -eq "512")} -properties PasswordExpired, Company, PasswordLastSet, userAccountControl, PasswordNeverExpires, LastLogonDate -SearchBase ‘OU=ваша организация,DC=loc’ |sort-object PasswordLastSet |FT Name, Company, PasswordExpired, PasswordLastSet, @{Label="Код учётки"; Expression={$_.userAccountControl}}, PasswordNeverExpires, LastLogonDate -autosize
==
Скрипт выводит полную информацию по отключенному пользователю из контейнера.
Вопрос по фильтру: как правильно заменить (userAccountControl -eq "512") на "учетка отключена".
Фраза  {-where (userAccountControl -eq "512") 'учетка' -replace '512','отключена'} изначально ущербна и не работает.  
подскажите как правильно заменить текст в запрос (если это возможно).
Спасибо.
 
Вопрос 2 - почему в этом же запросе заменить --autosize на Out-GridView приводит к ошибке?

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 15:25 25-02-2020 | Исправлено: caspara, 16:07 25-02-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
 
см. синтаксис LDAP
Повершел рекомендует использовать нативные фильтры в тех предметных областях, где они существуют.
Аналогично звёздочкам/вопросикам при обращении к файловой системе.
 
Если нативный язык слишком сложный и лень в нём разбираться, всё то же самое можно проделать повершелом, после добывания данных с более общим фильтром  
 
Предельный случай -Filter '*'
Вряд ли такой запрос положит вашу AD, с её 100500 юзерами
Если ресурсожручесть такого решения не устроит, придётся учить LDAP  
 

Всего записей: 14882 | Зарегистр. 14-10-2001 | Отправлено: 15:43 25-02-2020 | Исправлено: LevT, 15:49 25-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не-не-не, лдап запрос мне уже не нужен, итак много прав в домене позабирали.
Достали пользователи, которые не в домене, но конектятся аутлуком на эксчендж. Отслеживать таких нерадивых товарищей - освоил и со здешней помощью скрипты в повершлле, тем более я их выложил выше.
 
Это максимального уровня запрос, хотел уже "вылизать" начисто.
Если нельзя будет этого сделать, ведь можно просто написать
Search-ADAccount -AccountDisabled -searchbase
[img] [/img]

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 16:17 25-02-2020
U2007

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. https://winitpro.ru/index.php/2018/05/14/convertaciya-atributa-useraccountcontrol-v-ad/
2. -Autosize - это к FT, если хотите Out-GridView, то FT надо заменить на select и в конце добавить | Out-GridView  
... а можно экспортировать в эксель | Export-Csv .\file.csv, а уже в экселе преобразовать в таблицу и ваще красота

Всего записей: 298 | Зарегистр. 25-11-2008 | Отправлено: 16:47 25-02-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе утро, коллеги.  
[img] [/img]
Несколько вопросов по картинке.
Локаут тайм - он или 0 (вроде как учетка не заблокирована), или как на картинке некая дата в виде набора цифр.
Вопрос 1 - правильно ли я понял англо форумы, параметр локаут тайм  первый в признаке блокировки учетки из-за неправильных паролей для домена?
 А потом только отработает следующий стандартный скрипт  
Search-ADAccount -LockedOut -searchbase "OU=Donetcka,OU=Exchange_Users,DC=ukrposhta,DC=loc" |FT name, lastlogondate, ObjectClass -A после некоторого времени репликации контроллеров домена между собой?
 
Еще вопрос по правильному написанию скр ипта по параметру Локаут тайм.
Запрос  
Get-ADUser -filter { -not (lockoutTime -eq "0")} -properties Company, lockoutTime -SearchBase ‘OU=Donetcka,OU=Exchange_Users,DC=ukrposhta,DC=loc’ |sort-object Name |FT Name, Company, lockoutTime -Autosize
выводит локаут тайм в виде последовательности цифр.  
Его же вариант
Get-ADUser -filter { -not (lockoutTime -eq "0")} -properties Company, lockoutTime -SearchBase ‘OU=Donetcka,OU=Exchange_Users,DC=ukrposhta,DC=loc’ |sort-object Name |FT Name, Company, @{n='lockoutTime'; e={(Get-Date 1/1/1601).AddDays($_.lockoutTime)}} -Autosize
мне вообще не выводит дату
[img] [/img]
Как правильно вывести время блокировки учетки?
 
Или у меня нет полных прав для отображения этих сведений?
Хочется в скрипте увидеть дату и время, как на картинке
[img] [/img]
Спасибо.

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 09:58 10-03-2020 | Исправлено: caspara, 10:18 10-03-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
 
Очень "шумный" вопрос  
   из-за Вашего желания юзать халявные "скрипты", не вникая в основы Powershell
 
1) Про | Format-Table вообще забудьте
 
2) Вместо этого научитесь пользоваться | Format-List -Prop *
  НО ТОЛЬКО ДЛЯ ВЫЯСНЕНИЯ, какими свойствами на самом деле располагаете.
 
3) Когда всё это выясните - сможете правильно задать вопрос: "как из вот этих вот пропертей сконструировать объект с вот такими нужными мне пропертями?"

Всего записей: 14882 | Зарегистр. 14-10-2001 | Отправлено: 10:28 10-03-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Скрипты не совсем халявные, а уже переработанные под мои нужды.
Из-за огриничений сверху на ветку в домене, использую те средства, которые мне доступны - от мелксофта утиллита про статус пользователя, длл для ADUC- аддишинал информайшен и повершел со скриптами.
Ранее повершелл не использовал в своей работе вообще никак, но для контроля за пользователями в домене пришлось искать изначально скрипты и потом их творчески перерабатывать.
Вот измененный запрос
Get-ADUser -filter { -not (lockoutTime -eq "0")} -properties Company, lockoutTime, AccountLockoutTime -SearchBase ‘OU=Donetcka,OU=Exchange_Users,DC=ukrposhta,DC=loc’ |sort-object Name |FT Name, Company, lockoutTime, AccountLockoutTime -Autosize
который вывел результат
[img] [/img]
Смотрите, статус юзера в ADUC стоит как незаблокированный.
Если я разблокирую "незаблокированную" учетку и повторю запрос скрипта, то увижу такую картинку
[img] [/img]
Вопрос по теории - как полчается разница по статусу блокировки учетки - локауттайм отрабатывает правильно, а скрипт Search-ADAccount -LockedOut  выводит тот же результат не всегда правильно.
 
Вот, собственно, и хочу понять, как так получается.

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 11:20 10-03-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
 
Извините, лично я пас.
Я толсто намекнул, как переформулировать вопрос с уважением к отвечающим.
Дело ваше..
 
А то что Вы доставшуюся халяву научились ещё и "творчески перерабатывать",  
           с основами так и не разобравшись -  
 это уже Вам лично жирный минус в карму.

Всего записей: 14882 | Зарегистр. 14-10-2001 | Отправлено: 12:46 10-03-2020 | Исправлено: LevT, 12:48 10-03-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Извините, лично я пас.
Я толсто намекнул, как переформулировать вопрос с уважением к отвечающим.
Дело ваше..
 
А то что Вы доставшуюся халяву научились ещё и "творчески перерабатывать",  
           с основами так и не разобравшись -  
 это уже Вам лично жирный минус в карму.  

 скрипт выглядит правильно так
Get-ADUser -filter { -not (lockoutTime -eq "0")} -properties Company, lockoutTime, AccountLockoutTime -SearchBase ‘OU=Donetcka,OU=Exchange_Users,DC=ukrposhta,DC=loc’ |sort-object Name |FT Name, Company, @{n='lockoutTime';e={[datetime]::FromFileTime($_.lockoutTime)}}, AccountLockoutTime, @{n='badPasswordTime';e={[datetime]::FromFileTime($_.badPasswordTime)}} -Autosize

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 15:58 10-03-2020
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara
Посоветую не прислушиваться к советам пасующего, ибо сектанты - они такие, хорошему не научат...
 
А если серьезно, то не совсем понятно, в чем проблема? Что и с чем не сходится?
Если время, то метод:

Цитата:
[datetime]::FromFileTime()

не учитывает таймзоны.  
К тому же не совсем понятно, в каком формате представлено время lockoutTime...

Цитата:
PS_5.1> $a = get-date
PS_5.1> $a.ToFileTime()
132283767450551556
PS_5.1> $a.ToFileTimeUtc()
132283767450551556
PS_5.1> $a.ToBinary()
-8586177037404224252
PS_5.1> $a.ToUniversalTime()
 
11 марта 2020 г. 5:05:45
 
PS_5.1> [datetime]::FromBinary(132283767450551556)
 
11 марта 0420 г. 5:05:45
 
 
PS_5.1> [datetime]::FromBinary(-8586177037404224252)
 
11 марта 2020 г. 11:05:45
 
 
PS_5.1> [datetime]::FromFileTime(132283767450551556)
 
11 марта 2020 г. 11:05:45
 
 
PS_5.1> [datetime]::FromFileTimeUtc(132283767450551556)
 
11 марта 2020 г. 5:05:45

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 08:17 11-03-2020
caspara



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема вот в чем
[img] [/img]
 
Скрипт по локауттайму бидит бан юзера.
Стандартный скрипт этого бана не видит.
По факту юзер все таrи забанен на пол-часа.

Всего записей: 466 | Зарегистр. 04-08-2004 | Отправлено: 12:18 11-03-2020 | Исправлено: caspara, 12:21 11-03-2020
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
caspara

Цитата:
Стандартный скрипт этого бана не видит.
По факту юзер все таrи забанен на пол-часа.

Т.е. проблема в этом?  
И что значит "стандартный скрипт"? В "каропку" его ведь, кто-то положил...
Тут надо смотреть, что в этом скрипте насочиняли... иначе никак.
Мне тут затруднительно по скринам разбирать, AD и домена нет под рукой, проверять не на чем...

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 16:33 11-03-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru