Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/64: Рейтинг темы: голосов - 64, средняя оценка - 4.69
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131

Начало с PowerShell

02.10.2018, 13:00. Показов 15203. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Поздравьте меня. Я сам, вручную, написал свой первый работающий сценарий

Позвольте задавать вопросы.

1. Синтаксис. Так работает:

PowerShell
1
2
3
$Files = Get-ChildItem -Path C:\
 
 FOREACH ($File In $Files) { $File.FullName }
А так уже нет:
PowerShell
1
2
3
4
5
6
$Files = Get-ChildItem -Path C:\
 
 FOREACH ($File In $Files) 
 { 
    $File.FullName 
 }
PowerShell
1
2
3
4
5
6
7
PS C:\Windows\System32\WindowsPowerShell\v1.0>  }
строка:1 знак:2
+  }
+  ~
Непредвиденная лексема "}" в выражении или операторе.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken
И так то же:
PowerShell
1
2
3
4
5
$Files = Get-ChildItem -Path C:\
 
 FOREACH ($File In $Files) { 
    $File.FullName 
 }
PowerShell
1
2
3
4
PS C:\Windows\System32\WindowsPowerShell\v1.0>     $File.FullName 
C:\Windows10Upgrade
 
PS C:\Windows\System32\WindowsPowerShell\v1.0>
Выдало значение только из предпоследней ячейки..

Я могу только в строчку писать сценарии ? Во всех книжках С\С++ это считается плохим тоном и советуют к конструкции:

C++
1
2
3
{
      \\code
}
Тут же я не могу его использовать ?
Миниатюры
Начало с PowerShell  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2018, 13:00
Ответы с готовыми решениями:

PowerShell Начало
Добрый день уважаемые форумчане. Недавно задался целью изучить PowerShell для написания скриптов с целью автоматизировать свои рабочие...

PowerShell vs PowerShell ISE
Скажите, пожалуйста, чем PowerShell отличается от PowerShell ISE. Спасибо.

Выписать в массив A с начало положительные числа X, а в начало второго массива B отрицательные числа X.
Из одномерного массива X(8) получить два других массива A(8) и B(8). Выписать в массив A с начало положительные числа X, затем...

32
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.10.2018, 12:01
Лучший ответ Сообщение было отмечено pEntity как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pEntity Посмотреть сообщение
эти ПК, деактивировать и переместить в Клиентские ПК/!Отключенные
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$OUs = "OU=ЭНТХ,OU=Клиентские ПК,DC=ekoniva,DC=com","OU=ЭНТ,OU=Клиентские ПК,DC=ekoniva,DC=com"
$xOU = "OU=!Отключенные,OU=Клиентские ПК,DC=ekoniva,DC=com"
$OutFile = 'c:\data\report.csv'
$Months = -5
 
$computers = $OUs | %{Get-ADComputer -SearchBase $_ -Filter * -prop CanonicalName,LastLogonDate | ?{$_.LastLogonDate -le (Date).AddMonths($Months)}}
$computers | select name,CanonicalName,LastLogonDate | Export-Csv $OutFile -NoType -Delimiter ';' -enc UTF8
 
foreach ($PC in $computers)
{
    Disable-ADAccount -Identity $PC.DistinguishedName -Confirm:$false
    Move-ADObject -Identity $PC.DistinguishedName -TargetPath $xOU -Confirm:$false
}
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
08.10.2018, 13:40  [ТС]
Всё работает отлично. Дай Бог Вам денег, любви, здоровья ))
0
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
09.10.2018, 14:52  [ТС]
KDE777, можно Вас попросить отредактировать скрипт ?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
$time =  (get-date) - (new-timespan -min 124)
 
 
#$Events - содержит время и порядковый номер записи евента с ID=4660. И сортируем по порядковому номеру.
 
 
#!!!!Это важное замечание!!! При удалении файла создается сразу 2 записи, с ID=4660 и ID=4663.
 
 
$Events = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4660;StartTime=$time} | Select TimeCreated,@{n="Запись";e={([xml]$_.ToXml()).Event.System.EventRecordID}} |sort Запись
 
 
#Самые важные команды поиска. Опишу принцип ниже, после листинга скрипта.
 
 
$BodyL = ""
 
 
$TimeSpan = new-TimeSpan -sec 1
 
 
foreach($event in $events){
 
 
 $PrevEvent = $Event.Запись
 
 
 $PrevEvent = $PrevEvent - 1
 
 
 $TimeEvent = $Event.TimeCreated
 
 
 $TimeEventEnd = $TimeEvent+$TimeSpan
 
 
 $TimeEventStart = $TimeEvent- (new-timespan -sec 1)
 
 
 $Body = Get-WinEvent -FilterHashtable @{LogName="Security";ID=4663;StartTime=$TimeEventStart;EndTime=$TimeEventEnd} |where {([xml]$_.ToXml()).Event.System.EventRecordID -match "$PrevEvent"}|where{ ([xml]$_.ToXml()).Event.EventData.Data |where {$_.name -eq "ObjectName"}|where {($_.'#text') -notmatch ".*tmp"} |where {($_.'#text') -notmatch ".*~lock*"}|where {($_.'#text') -notmatch ".*~$*"}} |select TimeCreated, @{n="Файл_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "ObjectName"} | %{$_.'#text'}}},@{n="Пользователь_";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "SubjectUserName"} | %{$_.'#text'}}} 
 
 
 if ($Body -match ".*Shared*"){
 
 
  $BodyL=$BodyL+$Body.TimeCreated+"`t"+$Body.Файл_+"`t"+$Body.Пользователь_+"`n"
 
 
 }
 
}
 
 
$Month = $Time.Month
 
 
$Year = $Time.Year
 
 
$name = "DeletedFiles-"+$Month+"-"+$Year+".txt"
 
 
$Outfile = "\serverServerLogFilesDeletedFilesLog"+$name
 
 
$BodyL | out-file $Outfile -append
Сейчас он в txt выводит так: (Прикрепил изображение )

А можно в csv, чтоб в excele потом была табличка:

Человек / Дата Время / Путь файла
Миниатюры
Начало с PowerShell  
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.10.2018, 15:41
Цитата Сообщение от pEntity Посмотреть сообщение
отредактировать скрипт ?
Я не модератор, но думаю, что постоянно задавать не связанные между собой вопросы в одной и той же теме, не лучшая идея. Поэтому, создавайте отдельную тему (с корректным названием).
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
19.12.2018, 15:30  [ТС]
KDE777, здравствуйте. Можно Вас попросить отредактировать код в 15 сообщении ?

Мне теперь нужно узнать кто из пользователей был неактивен 5 месяцев. + Записать их последнюю дату логона.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2018, 15:48
Цитата Сообщение от pEntity Посмотреть сообщение
Можно Вас попросить отредактировать код в 15 сообщении ?
Мне теперь нужно узнать кто из пользователей был неактивен 5 месяцев. + Записать их последнюю дату логона.
Вы не поверите, но для этого достаточно заменить Get-ADComputer на Get-ADUser

Добавлено через 4 минуты
И ещё этот скрипт выберет и пользователей, у которых вообще нет LastLogonDate, т.е. УЗ создана, но ни разу не логинилась. Или таких выбирать не нужно?
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
19.12.2018, 15:53  [ТС]
KDE777, Вы не поверите, но я только что сам допер до этого. Прям вырос в своих глазах :-p

Ну а как найти юзеров, у которых даты нет, я конечно не знаю ))))

PowerShell
1
2
3
4
5
6
$OUs = 'OU=Пользователи,DC=Ekoniva,DC=com'
$OutFile = 'c:\data\report.csv'
$Months = -4
 
$OUs | %{ Get-ADUser -SearchBase $_ -Filter * -prop LastLogonDate,CanonicalName | ?{$_.LastLogonDate -le (Get-Date).AddMonths($Months)}
} | select name,CanonicalName,LastLogonDate | Export-Csv $OutFile -NoType -Delimiter ';' -enc UTF8
Добавлено через 2 минуты
Чекашкин Сергей ekoniva.com/Пользователи/НиваСтрой/Департамент по строительству/Чекашкин Сергей

А как может быть, что у него нет даты ?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2018, 16:01
Цитата Сообщение от pEntity Посмотреть сообщение
А как может быть, что у него нет даты ?
Перечитать мой предыдущий ответ:

Цитата Сообщение от KDE777 Посмотреть сообщение
УЗ создана, но ни разу не логинилась.
Добавлено через 1 минуту
Цитата Сообщение от pEntity Посмотреть сообщение
Ну а как найти юзеров, у которых даты нет, я конечно не знаю
PowerShell
1
$OUs | %{ Get-ADUser -SearchBase $_ -Filter * -prop LastLogonDate,CanonicalName | ?{!$_.LastLogonDate}} | select name,CanonicalName,LastLogonDate
Добавлено через 1 минуту
А так, мы исключим эти УЗ из отчёта:

PowerShell
1
2
$OUs | %{ Get-ADUser -SearchBase $_ -Filter * -prop LastLogonDate,CanonicalName | ?{$_.LastLogonDate -and $_.LastLogonDate -le (Get-Date).AddMonths($Months)}
} | select name,CanonicalName,LastLogonDate | Export-Csv $OutFile -NoType -Delimiter ';' -enc UTF8
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
19.12.2018, 16:23  [ТС]
Сложна) Благодарю! Я бы еще хотел спросить, как исключить контейнер - Компьютеры - отключенные

Но мне кажется проще в csv руками удалить )
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
19.12.2018, 16:31
Цитата Сообщение от pEntity Посмотреть сообщение
Я бы еще хотел спросить, как исключить контейнер - Компьютеры - отключенные
Так в скрипте нужные OU перечисляются через запятую. Или у вас OU "Компьютеры", находится где-то в глубине OU "Пользователи"?

Добавлено через 3 минуты
тогда можно так:

PowerShell
1
2
$OUs | %{ Get-ADUser -SearchBase $_ -Filter * -prop LastLogonDate,CanonicalName | ?{$_.LastLogonDate -and $_.CanonicalName -notmatch '/Компьютеры' -and $_.LastLogonDate -le (Get-Date).AddMonths($Months)}
} | select name,CanonicalName,LastLogonDate | Export-Csv $OutFile -NoType -Delimiter ';' -enc UTF8
0
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
19.12.2018, 16:31  [ТС]
OU то много. Все моих OU в ново созданном подраздении "Компьютеры", а там еще куча всяких. И вот там так же лежит "отключенные."

Вместо того, чтоб всю кучу перечислять в Компьютерах, легче же исключить "отключенные" ?


А, вы меня чуть не так поняли, я криво написал. Компьютеры не надо исключить, только "отключенные" лежащий в "компьютеры"
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.12.2018, 11:44
Цитата Сообщение от pEntity Посмотреть сообщение
Компьютеры не надо исключить, только "отключенные" лежащий в "компьютеры"
Я вам пример того, как можно что-то исключить показал, а дальше неужели сложно поменять слово "компьютеры" на "отключенные"?
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
20.12.2018, 16:06  [ТС]
Не, это понятно ) Я писал свое сообщение, до того как его увидел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2018, 16:06
Помогаю со студенческими работами здесь

Все положительные элементы массива поместить в начало массива B, а отрицательные — в начало C
помогите не как не могу понять как записать код для задачи (Дан числовой массив A размера N. Все его положительные элементы поместить в...

Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)
Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)....

65. (7 б.) Дан массив A(n). Все положительные его элементы поместить в начало массива B(n), а отрицательные элементы – в начало массива C(n). Подсчита
65. (7 б.) Дан массив A(n). Все положительные его элементы поместить в начало массива B(n), а отрицательные элементы – в начало массива...

Переход начало и конец вывода строк:каким образом переходить по экрану на начало и конец списка строк?
Разработать процедуры "TOP" установки окна на начало файла и процедуры “BOT” установки на конец файла для заданного текстового файла....

PowerShell
Надо привести пример использования командлета Disable-WSManCredSSP в PowerShell. Ввожу команду Disable-WSManCredSSP -Role Client и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru