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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 22

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

ShriEkeR



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

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

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

 
    Внимание   !  !  !  

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

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

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

Windows Script Host (WSH) &  VBScript  &  JScript


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

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

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

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

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

Всего записей: 6382 | Зарегистр. 27-09-2004 | Отправлено: 21:07 23-05-2011 | Исправлено: djremix, 14:12 25-04-2022
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в варианте alexnov66 надо и PCI в проценты сделать
Подробнее...

----------
Мы все умрём. (-:

Всего записей: 4916 | Зарегистр. 23-04-2009 | Отправлено: 18:41 29-10-2019
vklp

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прорекламирую свою платформу для скриптов:
https://github.com/vikilpet/Taskopy/blob/master/readme_ru.md
Там внизу есть примеры.
 
Вытаскивание адаптера как в этом посте:
http://forum.ru-board.com/topic.cgi?forum=8&topic=41227&start=340#14
будет как-то так:
 

Код:
 
def wmic_adapter_demo():
    out = app_start('wmic', 'path Win32_NetworkAdapter', capture_output=True)[1]
    print(re_find(out, r'.+?802.+?PCI\\')[0])
 

Всего записей: 132 | Зарегистр. 21-02-2019 | Отправлено: 13:24 10-02-2020
likbez



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
долго искали решение, но так и не нашлось:
имеется локальная сеть с обычными стационарными компьютерами и ноутбуками (более 30 единиц, установленных на протяжении 10 лет - XP, Vista, Win10Pro, Win10Home = потому что всё только лицензионное) + server 2008 standard DC и DHCP + NAS с SMB1 + несколько виртуальных под VMWARE WS (хост - Win10Pro) + несколько виртуальных (CentOS и т.п.) под ESXI.
часть физических машин в АД, часть - нет.
плавающая, но ежедневная проблема:  
в "Сети" отображаются периодически некоторые компьютеры. из некоторых на некоторые нельзя зайти, а через пару минут уже можно. на некоторые "невидимые" можно зайти через адресную строку \\computer025\ , а на другие выдает ошибку "не найден сетевой путь", но тогда удается зайти через \\192.168.0.25\, но часто и так выдает "нет доступа". В этой проблеме не прослеживаются закономерности, доступ пропадает и появляется хаотически.
 
найденные на форумах "умные" инструкции, конечно же, не работают:
типа включить старый SMB в компонентах, включить через NETBios в WINS, отключить и удалить лицензионный корпоративный антивирус, добавить в регистр ключи типа,  
"SMB1"=dword:00000000  
в [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters]
 
SmbDeviceEnabled тип dword, значение 1
в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters  
 
"NodeType"=dword:00000001  
в [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]  
 
и т.п. Добавление таких ключей только уменьшает количество видимых и доступных расшаренных ресурсов.
при этом ping проходит во всех направлениях.
 
теперь вопрос: как этот зоопарк автоматизировать (кроме апгрейда ВСЕХ до Win10)?
важно чтобы КАЖДЫЙ пользователь рабочей станции имел возможность чтения расшаренных папок с КАЖДОЙ другой рабочей станции независимо от AD.

Всего записей: 1089 | Зарегистр. 10-05-2002 | Отправлено: 17:41 18-02-2020
LevT



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
likbez

Цитата:
важно чтобы КАЖДЫЙ пользователь рабочей станции имел возможность чтения расшаренных папок с КАЖДОЙ другой рабочей станции независимо от AD.

 
Тогда сами трахайтесь, или ищите таких же оригинальных "братьев по разуму"
Майки уже 20 лет назад поняли, какую ошибку сделали подсадив народец на папку "сеть" и её содержимое.
 
Это давно не поддерживается, в пользу клиент-серверной архитектуры (файловых серверов).
Оставьте ту гнилую мысль и купите NAS.
     И даже с ним придётся потрахаться, в силу вашего зоопарка.

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

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

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

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

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

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

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



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

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

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

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

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

Всего записей: 7213 | Зарегистр. 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.
Спасибо.

Всего записей: 468 | Зарегистр. 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

Всего записей: 360 | Зарегистр. 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

Всего записей: 468 | Зарегистр. 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

Всего записей: 781 | Зарегистр. 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
 
Если кому пригодится.

Всего записей: 468 | Зарегистр. 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 приводит к ошибке?

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



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

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



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

Всего записей: 468 | Зарегистр. 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, а уже в экселе преобразовать в таблицу и ваще красота

Всего записей: 360 | Зарегистр. 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]
Спасибо.

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



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

Всего записей: 17168 | Зарегистр. 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  выводит тот же результат не всегда правильно.
 
Вот, собственно, и хочу понять, как так получается.

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



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

Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 12:46 10-03-2020 | Исправлено: LevT, 12:48 10-03-2020
Открыть новую тему     Написать ответ в эту тему

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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru