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

Начало с PowerShell

02.10.2018, 13:00. Показов 15097. Ответов 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
02.10.2018, 13:23
pEntity, судя по скриншоту вы не весь скрипт выполняете (F5), а только выделенный фрагмент (F8). От этого и ошибки
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
02.10.2018, 13:25  [ТС]
Едрен батон. Получилось. А я даже и не обращал внимания на это) Благодарю.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.10.2018, 13:25
Вам же по русски пишут что "строка 1, знак 2" - это фигурная скобка "}". Разве в целом вашем скрипте это так?
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
02.10.2018, 13:27  [ТС]
А я думал с $Files = Get-ChildItem -Path C:\
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.10.2018, 13:30
Цитата Сообщение от pEntity Посмотреть сообщение
А я думал с $Files = Get-ChildItem -Path C:\
И где в этой строке - Непредвиденная лексема "}"? Тогда уж, "строка:1, знак:2" - это "F"
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
02.10.2018, 13:33  [ТС]
KDE777, согласен ) Для теста хочу написать такой сценарий:

От 1января до сегодня пройтись по всем пользавокам АД и выявить учетки, которые были созданы в этом интервале времени и записать в файл.

Каков будет алгоритм ?

1. Получить интервал даты.
2. Пройтись циклом по всем пользавокам.
3. Получить дату создания учетки.
4. Если попадает в интервал даты, записать.

Так?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.10.2018, 13:33
В PS_ISE можно использовать Ctrl+J и быстро вставлять уже готовые, синтаксически верные конструкции для всяких foreach, switch и т.п.
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
02.10.2018, 13:41  [ТС]
А Ctrl+J как работает? Он там выдает мне десяток командлетов и всё. Или нужно жать на свой, вставленный и он показывает вариации ?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.10.2018, 13:45
Цитата Сообщение от pEntity Посмотреть сообщение
От 1января до сегодня пройтись по всем пользавокам АД и выявить учетки, которые были созданы в этом интервале времени и записать в файл.
Каков будет алгоритм ?
В данном случае это одна строчка: Get-ADUser | Where-Object | Select-Object | Export-Csv

PowerShell
1
Get-ADUser -Filter * -Properties createTimeStamp | ? createTimeStamp -GE (date '01.01.2018')| sort createTimeStamp | select Name,SamAccountName,createTimeStamp | Export-Csv C:\Temp\users.csv -enc UTF8 -NoType -del ';'
Цитата Сообщение от pEntity Посмотреть сообщение
А Ctrl+J как работает? Он там выдает мне десяток командлетов и всё. Или нужно жать на командлет и он показывает вариации ?
Ctrl+J и набираете, например две первые буквы "fo", потом стрелкой на нужный вариант и enter
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
02.10.2018, 13:48  [ТС]
Дауж, слишком сложно пока. Я мыслю с языка С\С++ поэтапно, структурировано. А тут одна строчка )

Я бы начал вообще с типа такого:

PowerShell
1
2
3
4
5
6
7
8
9
$DataStart = '2018-01-01'
$DataEnd = '2018-02-10'
 
$Difference = New-TimeSpan -Start $DataStart -End $DataEnd
 
if( $Difference ) 
{
Мой промежуток времени.   
}
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
02.10.2018, 13:54
pEntity,
А тут одна строчка )
Дело в том, что конвеерный принцип - основополагающий в powershell
Изначально, можете писать промежуточными кусками, необязательно все делать в одну строку.
Здесь больше дело вкуса, слишком длинные строки тоже не всегда удобно.

Для начала, лучше почитать справку, и какую-нибудь литературу для новичков с примерами.
Ну и наверное, что-то про объекты NET, тоже не будет лишним
1
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
02.10.2018, 14:00
Цитата Сообщение от pEntity Посмотреть сообщение
Дауж, слишком сложно пока.
Как раз проще некуда - найти все AD УЗ (Get-ADUser) | из них выбрать, те у которых дата создания больше или равна заданной (Where-Object) | далее отобрать только нужные свойства пользователя (Select-Object) | и всё что получилось сохранить в csv-таблице (Export-Csv)
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
08.10.2018, 08:29  [ТС]
KDE777, можете помочь написать строчку повершела )) Выгрузить список компьютеров, которые не активны более 5 месяцев ? В OU ENT и ENTH

Они лежат в: domain.ru - Клиентские ПК - эти мои OU.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.10.2018, 10:12
Цитата Сообщение от pEntity Посмотреть сообщение
Выгрузить список компьютеров, которые не активны более 5 месяцев ? В OU ENT и ENTH
PowerShell
1
2
3
4
5
6
$OUs = 'OU=ENT,DC=domain,DC=ru','OU=ENTH,DC=domain,DC=ru'
$OutFile = 'c:\data\report.csv'
$Months = -5
 
$OUs | %{ Get-ADComputer -SearchBase $_ -Filter * -prop LastLogonDate,CanonicalName | ?{$_.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
08.10.2018, 11:01  [ТС]
KDE777, у меня так OU не находит. Работает так:

PowerShell
1
2
3
PS C:\Users\a.mikhalevskii_adm> $date_with_offset= (Get-Date).AddDays(-150)
 
Get-ADComputer  -SearchBase "OU=ЭНТХ,OU=Клиентские ПК,DC=ekoniva,DC=com" -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -Autosize
Можно Вас попросить корректный кусок "OU=ЭНТХ,OU=Клиентские ПК,DC=ekoniva,DC=com" вставить в свой код и еще "OU=ЭНТ,OU=Клиентские ПК,DC=ekoniva,DC=com" ?

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

Цитата Сообщение от pEntity Посмотреть сообщение
Можно Вас попросить корректный кусок "OU=ЭНТХ,OU=Клиентские ПК,DC=ekoniva,DC=com" вставить в свой код и еще "OU=ЭНТ,OU=Клиентские ПК,DC=ekoniva,DC=com" ?
Нужные OU присваиваете переменой $OUs - просто перечисляете в виде DN (DistinguishedName) в кавычках, разделённые запятой.

PowerShell
1
2
3
4
5
6
$OUs = "OU=ЭНТХ,OU=Клиентские ПК,DC=ekoniva,DC=com","OU=ЭНТ,OU=Клиентские ПК,DC=ekoniva,DC=com"
 
$OutFile = 'c:\data\report.csv'
$Months = -5
 
$OUs | %{Get-ADComputer -SearchBase $_ -Filter * -prop * | ?{$_.LastLogonDate -le (Date).AddMonths($Months)}} | select name,CanonicalName,LastLogonDate | Export-Csv $OutFile -NoType -Delimiter ';' -enc UTF8
Цитата Сообщение от pEntity Посмотреть сообщение
А так же можно дополнить, чтоб результат вывода пк писало с полным путем, где он лежит ?
Это уже было сделано - AD свойство CanonicalName
1
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
08.10.2018, 11:35  [ТС]
Ошибочка:

Export-Csv : Не удается проверить аргумент для параметра "Encoding". Аргумент "UTF" не принадлежит набору "Unicode,UTF7,UTF8,ASCII,UTF32,BigEndian Unicode,Default,OEM", з
аданному атрибутом ValidateSet. Укажите аргумент, который принадлежит данному набору, после чего повторите выполнение команды.
строка:6 знак:203
+ ... miter ';' -enc UTF
+ ~~~
+ CategoryInfo : InvalidData: ( [Export-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microso ft.PowerShell.Commands.ExportCsvCommand
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
08.10.2018, 11:39
Цитата Сообщение от pEntity Посмотреть сообщение
Ошибочка:
Копипастить надо полностью У меня в примере "UTF8", а в сообщение об ошибке "UTF"
0
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
08.10.2018, 11:46  [ТС]
Я понял, я Лошара )

Как всегда, всё ахрененно работает )) Благодарю!

Добавлено через 5 минут
DKE777, а можно Вас теперь попросить, эти ПК, деактивировать и переместить в Клиентские ПК/!Отключенные

?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2018, 11:46
Помогаю со студенческими работами здесь

Все положительные элементы массива поместить в начало массива 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 и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru