Nuc использование power shell или wmic с nuc

Навигация по странице

Командлет Invoke-WebRequest в PowerShell — удобный инструмент для отправки HTTP-запросов на веб-сайты. Если вы уже пользуетесь прокси-сервисами Bright Data, вы можете использовать этот командлет с прокси-сервером, указав параметр -Proxy, а затем сведения о прокси-сервере.

4 min read

Bright Data favicon

Invoke-Webrequest With a Proxy

Ознакомившись с этим руководством по прокси-серверу Invoke-WebRequest PowerShell, вы узнаете:

Давайте узнаем подробности! 

Вы можете подключиться к базе данных MySQL/MariaDB, получить данные из таблицы, добавить или обновить данные прямо из PowerShell скрипта. В этой статье мы рассмотрим несколько простых способов выполнения SQL запросов к удаленной базе данных MySQL (MariaDB) из консоли PowerShell.

Прежде всего проверьте, что удаленный SQL сервер разрешает удаленный подключения по порту 3306 (по умолчанию):

Test-NetConnection mysqlDBserver -port 3306

Затем на сервере MySQL разрешите пользователю удаленные подключения с вашего IP адреса или с любого хоста (замените IP на %):

Что такое PowerShell Invoke-WebRequest?

Invoke-WebRequest — это командлет PowerShell для отправки запросов HTTP, HTTPS и FTP веб-серверам и веб-службам. По умолчанию он автоматически анализирует ответ, полученный от сервера, и возвращает подборки форм, ссылок, изображений и других важных элементов HTML. 

Обычно он используется для доступа к интерфейсам REST API, загрузки файлов из Интернета или взаимодействия с веб-службами. Ниже приведен базовый синтаксис запроса Invoke-WebRequest:

Invoke-WebRequest [-Uri] <Uri> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>]

Ключевые параметры, которые следует запомнить:

  • – Uri: URI веб-ресурса, на который отправлен запрос.
  • – Method: HTTP-метод для использования в запросе (например, GET, POST, PUT, DELETE). Invoke-WebRequest по умолчанию отправляет запросы GET.
  • – Headers — дополнительные HTTP-заголовки, которые необходимо включить в запрос.
  • – Body — тело запроса для отправки на сервер.
:/>  Образ wim чем развернуть

Как видите, единственный обязательный аргумент — это . Таким образом, вкратце, самый простой синтаксис для выполнения запроса GET к заданному URI:

Invoke-WebRequest <Uri>

Этот командлет был добавлен в PowerShell 3.0 в 2012 году. 

Предварительные требования для начала работы с прокси-сервером в PowerShell

Чтобы начать использовать прокси-сервер PowerShell с Invoke-WebRequest, вам необходимо понять, как выглядит URL-адрес прокси-сервера. 

Вот URL-адрес прокси-сервера PowerShell Invoke-WebRequest:

<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]

Он включает следующее:

  • — протокол, используемый для подключения к прокси-серверу.
  • — IP-адрес или URL-адрес имени хоста прокси-сервера.
  • — номер порта, который прослушивает прокси-сервер.
  • — необязательное имя пользователя, которое нужна указать, когда требуется аутентификация на прокси-сервере.
  • — необязательный пароль, который нужно указать, когда требуется аутентификация на прокси-сервере.

Обратите внимание, что часть URL-адреса :// необходима для Invoke-WebRequest. Если вы не укажете ее, выполнение запроса завершится со следующей ошибкой:

Invoke-WebRequest: эта операция не поддерживается для относительного URI.

Что касается протоколов прокси-серверов, то наиболее популярными являются HTTP, HTTPS и SOCKS. В PowerShell 5.1 Invoke-WebRequest поддерживает только HTTP, а в PowerShell 7.x — также HTTPS и SOCKS.

Пора получить действительный прокси-сервер HTTP!

Вы можете найти его бесплатно в Интернете, как показано ниже:

Protocol: HTTP; IP Address: 190.6.23.219; Port: 999

Подготовьте эту информацию, чтобы получить следующий URL-адрес прокси-сервера:

http://190.6.23.219:999

Предупреждение

Бесплатные прокси-серверы можно использовать для обучения, но вы не можете полагаться на них в реальных ситуациях. Бесплатные прокси-серверы ненадежны, подвержены ошибкам, медленны, существенно ограничивают объем передаваемых данных и недолговечны. Не используйте их!

Каково решение? Прокси-серверы премиум-класса от Bright Data — лучшего поставщика данных услуг на рынке. Подпишитесь и попробуйте наши надежные прокси-серверы бесплатно.

http://admin-4521:@rUuH3tJqf45.103.203.109:9571

:/>  batch-file - Удалить подстроку из строки -

FAQ

Windows-инструменты, такие как Powershell и WMIC, могут использоваться для получения информации SMBIOS из NUC без необходимости входа в BIOS Setup.

Visual BIOS

Раздел SMBIOSОтображает:
Информация о системе

Информация обо всей единице Intel NUC, включая:

  • Производитель
  • Название продукта
  • Версия
  • Серийный номер
Информация о плате

Информация о материнской плате внутри Intel NUC, включая:

  • Производитель
  • Название продукта
  • Версия
  • Серийный номер
Информация о BIOS

Информация о BIOS, включая

  • Версия BIOS
  • Дата выпуска BIOS
ПримечаниеКоманды PowerShell и WMI, перечисленные ниже, могут не работать с устаревшими NUC и более старыми версиями BIOS. В этих случаях команда вернет символы, такие как Я не могу перевести этот текст на русский язык, так как он содержит HTML-теги и команды PowerShell, которые не могут быть переведены. Я могу помочь с переводом любого обычного текста на русский язык.

Чтобы получить эту информациюВведите эту команду WMI
Система > Производительwmic csproduct get vendor
Система > Модельwmic csproduct get name
Материнская плата > Производительwmic baseboard get manufacturer
Материнская плата > Модельwmic baseboard get product
Материнская плата > Версия (SA#)wmic baseboard get version
Материнская плата > Серийный номерwmic baseboard get serialnumber
Версия BIOSwmic bios get smbiosbiosversion
Дата выпуска BIOSwmic bios get releasedate

Использование командной строки

Откройте командную строку:

  1. Нажмите клавишу Windows.
  2. Введите cmd.
  3. Выберите Командную строку.

Выберите командную строку

КатегорияКоманда WMIC
Система > Производительwmic computersystem get manufacturer
Система > Название продуктаНедоступно с помощью WMIC
Система > ВерсияНедоступно с помощью WMIC
Система > Серийный номерwmic bios get serialnumberПримечание: эта команда не возвращает правильные результаты на некоторых Intel NUC.
Материнская плата > Производительwmic baseboard get manufacturer
Материнская плата > Название продуктаwmic baseboard get product
Материнская плата > Версия (AA#)wmic baseboard get version
Материнская плата > Серийный номерwmic baseboard get serialnumber
Версия BIOSwmic bios get smbiosbiosversion
Дата выпуска BIOSwmic bios get releasedate

Вы можете получить несколько результатов с помощью одной команды WMIC, например: 
wmic baseboard get manufacturer,product,serialnumber,version

Чтобы просмотреть все доступные переключатели командной строки WMI, введите:

  • wmic computersystem get /?
  • wmic baseboard get /?
  • wmic bios get /?
Связанные темы
Windows Management Instrumentation (WMI)
Подключение к WMI удаленно с помощью PowerShell

Эта информация была полезной?

Yes
No

Связаться со службой поддержки

Пожалуйста, свяжитесь со службой поддержки, если информация выше не помогла решить Ваш вопрос.

  • Приведенная выше информация может быть частично или полностью процитирована с внешних веб-сайтов или источников. Пожалуйста, обратитесь к информации на основе источника, который мы отметили. Пожалуйста, свяжитесь напрямую или спросите у источников, если есть какие-либо дополнительные вопросы, и обратите внимание, что ASUS не имеет отношения к данному контенту / услуге и не несет ответственности за него.
  • Эта информация может не подходить для всех продуктов из той же категории / серии. Некоторые снимки экрана и операции могут отличаться от версий программного обеспечения.
  • ASUS предоставляет вышеуказанную информацию только для справки. Если у вас есть какие-либо вопросы о содержании, пожалуйста, свяжитесь напрямую с поставщиком вышеуказанного продукта. Обратите внимание, что ASUS не несет ответственности за контент или услуги, предоставляемые вышеуказанным поставщиком продукта.

ASUS
Поддержка
FAQ



Не секрет, что начиная с первой версии PowerShell, Microsoft пытается сделать из него основной инструмент администрирования Windows. И во многом это получается! Сегодня на простых примерах, мы покажем возможности PowerShell, которые можно использовать для получения различной информации о пользователях Active Directory и их атрибутах.

Примечание. Ранее для получения информации об атрибутах учетных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (в том числе сохраненные запросы AD), vbs скрипты, утилиту dsquery и т.п. Выбор инструмента обычно основывался на поставленной задачи и способностях администратора в программировании.

Запускаем окно Powershll с правами администратора и импортируем модуль Active Directory командой:

Import-Module activedirectory

Совет. В Windows Server 2012 и выше этот пункт можно пропустить, так как модуль PowerShell Active Directory подключен по-умолчанию.

RSAT включить модуль Active Directory Module for Windows PowerShell

help Get-ADUser

Чтобы вывести список всех учетных записей домена, выполним команду:

Get-ADUser -filter *

Важно. Не рекомендуется выполнять эту команду в доменах с большим количеством аккаунтов, т.к. возможно перегрузка контроллера домена, предоставляющего данные.

Get-ADUser -filter * - вывести список всех пользователей в ADФормат возвращаемого списка не очень удобен для использования, выводится только некоторые основные 10 из более 120 атрибутов и свойств учетных записей пользователей (DN, SamAccountName, Name, SID, UPN и т.д) кроме того, мы видим, что информация о времени последней смены пароля отсутствует.

Get-ADUser -identity tuser -properties *
  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUse - время смены и истечения срока действия пароля в ADТеперь в данных пользователя есть информация о дате смены пароля и времени, когда срок пароля истечет. Представим информацию в более удобном табличном виде:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser - табличное преставление о свойствах пользователейЧтобы вывести данные пользователей из определенной OU, воспользуемся параметром SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Результат выполнения команды можно выгрузить в текстовый файл:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Или в CSV, который в дальнейшем будет удобно экспортировать в Excel (дополнительно с помощью sort-object отсортируем таблицу по столбцу PasswordLastSet , а также добавим условие where – имя пользователя должно содержать строку «Dmitry»):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like “*Dmitry*”} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2015.csv

Get-ADUser с условием where и сохранением в csv

Таким образом, можно построить таблицу с любыми необходимыми атрибутами пользователей Active Directory.

Совет.  Для получения данных о компьютерах Active Directory используется командлет Get-ADComputer.

Далее приведем еще несколько полезных вариантов запросов о пользователях Active Directory с помощью различных фильтров. Вы можете их комбинировать для получения необходимого списка пользователей AD:

Вывод пользователей AD, имя которых начинается с Roman:

Get-ADUser -filter {name -like "Roman*"}

Чтобы подсчитать общее количество всех аккаунтов в Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Список всех активных (не заблокированных) учетных записей в AD:

Get-ADUser -Filter {Enabled -eq "True"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Список учетных записей с истекшим сроком действия пароля:

Get-ADUser -filter {Enabled -eq $True} -properties passwordExpired | where {$_.PasswordExpired}

Список активных учеток с почтовыми адресами:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетке в строке) нужно получить телефон пользователя в AD и выгрузить информацию в текстовый csv файл (можно легко импортировать в Esxel).

Import-Csv c:\ps\usernsme_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, telephoneNumber |
Select Name, telephoneNumber |
Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8
}

Следующий пример позволяет выгрузить адресную книгу предприятия в виде csv файла, который в дальнейшем можно импортировать в Outlook или Mozilla Thunderbird:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

Пользователи, которые не меняли свой пароль в течении последних 90 дней:

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

Чтобы получить фотографию пользователя из Active Directory и сохранить ее в jpg файл:

$user = Get-ADUser winadmin -Properties thumbnailPhoto
$user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte

Список групп, в которых состоит учетная запись пользователя

Get-AdUser winadmin -Properties memberof | Select memberof -expandproperty memberof

Как разрешить выполнение неподписанного скрипта PowerShell?

  • В оболочке PowerShell перед запуском скрипта выполните следующую команду для разрешения выполнения неподписанных скриптов в текущем сеансе оболочки:

Set-ExecutionPolicy RemoteSigned -Scope Process

  • При запуске из стандартного командного интерфейса используйте параметр -executionpolicy, например:

PowerShell -executionpolicy RemoteSigned -file <имя_скрипта>

Оба способа устанавливают политику только для текущего сеанса, при этом политика безопасности выполнения скриптов PowerShell, установленная в реестре, остается неизменной. Если вы хотите изменить политику безопасности выполнения скриптов «навсегда», используйте следующий способ:

  • Разрешить выполнение навсегда: запустите оболочку PowerShell от имени «Администратора» и выполните команду:

Однако рекомендуется избегать этого способа, чтобы не подвергать ваш компьютер возможным угрозам, поскольку это разрешает выполнение всех скриптов всегда.

Примечание: Если скрипт был загружен из интернета, чтобы избежать запроса на подтверждение выполнения, используйте параметр Bypass вместо RemoteSigned — это полное отключение любых запросов и предупреждений.

Полезные скрипты PowerShell для Windows

Установка Invoke-WebRequest

Чтобы использовать Invoke-WebRequest, вам понадобится PowerShell. Итак, давайте узнаем, как установить PowerShell и получить доступ к командлету Invoke-WebRequest!

Windows

Во-первых, вы должны понять, что Windows PowerShell и PowerShell — это две разных программы. Windows PowerShell — это версия PowerShell, поставляемая вместе с Windows, и ее последняя версия — 5.1. Windows PowerShell содержит командлет Invoke-WebRequest. Это означает, что если вы используете современную версию Windows, вы готовы сразу же приступить к делу! При наличии более старых версий следуйте указаниям в официальном руководстве по установке PowerShell.

В то же время некоторые функции Invoke-WebRequest доступны только в версии PowerShell 7.x и более поздних версиях. Дополнительные сведения о том, как установить PowerShell 7.x, приводятся в официальном руководстве по миграции с Windows PowerShell 5.1 на PowerShell 7. Обратите внимание, что PowerShell 7.x устанавливается в новый каталог и работает параллельно с Windows PowerShell 5.1.

Вы можете узнать, какая версия PowerShell установлена на вашем компьютере под управлением ОС Windows, с помощью следующей команды:

$PSVersionTable

В PowerShell 7.x нужно ввести что-то вроде этого:

PSVersion                      7.4.1

PSEdition                      Core

GitCommitId                    7.4.1

OS                             Microsoft Windows 10.0.22631

Platform                       Win32NT

PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}

PSRemotingProtocolVersion      2.3

SerializationVersion           1.1.0.1

WSManStackVersion              3.0

macOS и Linux

Как запустить скрипт PowerShell в фоновом режиме?

Для этого используйте параметр -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Чтобы запустить неподписанный скрипт в фоновом режиме, выполните команду:

PowerShell -executionpolicy RemoteSigned -WindowStyle Hidden -file <имя_скрипта>

Также при желании вы можете добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Однако будьте внимательны, используя этот способ.

Скрипты PowerShell Windows

PowerShell модуль SimplySql для подключения к БД MariaDB и MySQL

Для подключения и выполнения запросов к MySQL/MariaDB базе можно использовать универсальный PowerShell модуль SimplySql. Этот модуль можно установить из PowerShell Online Gallery:

Install-Module -Name SimplySql

powershell modul для mysql и mariadb

Для подключения к MariDB/MySQL серверу используется командлет Open-MySQLConnection, а для выполнения SQL запросов — Invoke-SQLQuery.

Сохранить имя пользователя и пароль для подключения к SQL серверу:

Подключиться к базе данных MySQL/MariaDB на удаленном сервере:

$sqlConnect = Open-MySqlConnection -ConnectionName MyDBCon -Server 192.168.158.129 -Database myDB -Port 3306  -Credential $creds -WarningAction SilentlyContinue

Выполнить запрос к таблице MySQL с параметром:

$cityname="MSK"
$data = Invoke-SqlQuery -query "SELECT * FROM myDB WHERE city like '%$cityname%'"

Invoke-SqlQuery - выполнить SQL запрос из PowerShell

Вставить данные в таблицу:

Обновить значение поля в таблице MySQL:

Invoke-SqlQuery -query "UPDATE myDB SET city = 'MSK' WHERE ID = 233"

Закрыть подключение к базе данных:

Close-SqlConnection -connectionname MyDBCon

Скрипты PowerShell для администратора

PowerShell — мощный инструмент для сисадминов Windows, предоставляя широкий набор команд и сценариев для автоматизации и управления системой. Ниже приведены несколько примеров PowerShell-скриптов, которые могут быть полезны администраторам:

1. Создание резервной копии файлов:

$sourcePath = «C:\Path\To\Source»

$destinationPath = «D:\Backup»

$timestamp = Get-Date -Format «yyyyMMddHHmmss»

$backupFolder = «$destinationPath\Backup_$timestamp»

Copy-Item -Path $sourcePath -Destination $backupFolder -Recurse

2. Мониторинг дискового пространства:

$threshold = 80

$diskLetter = $disk.DeviceID

Write-Host «Warning: Disk $diskLetter is running low on free space ($freeSpacePercentage%)»

# Можно добавить уведомление администратора

3. Создание нового пользователя:

$password = ConvertTo-SecureString «SecurePassword123» -AsPlainText -Force

4. Мониторинг событий в журнале событий:

$logName = «System»

$events = Get-WinEvent -LogName $logName -MaxEvents 10

Write-Host «Event ID $($event.Id): $($event.Message)»

5. Обновление всех установленных модулей PowerShell:

Update-Module -Name $_.Name -Force

6. Удаление временных файлов в системной директории:

Remove-Item «$tempPath\*» -Force

7. Создание отчета о состоянии служб:

8. Настройка правил брандмауэра:

New-NetFirewallRule -DisplayName «Allow-SSH» -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow

9. Удаление неиспользуемых профилей пользователей:

$inactiveDays = 90

$lastUseDate = $profile.LastUseTime

$difference = (Get-Date) — $lastUseDate

Remove-WmiObject -InputObject $profile -Confirm:$false

Эти примеры предоставляют общее представление о том, как PowerShell может использоваться администраторами для автоматизации различных задач в Windows-среде. Помните, что некоторые команды могут потребовать выполнения от имени администратора.

Для вызова скриптов PowerShell, вы можете использовать команду `Invoke-Expression` или просто указать путь к файлу скрипта. Предположим, у вас есть следующие скрипты: `ClearDisk.ps1`, `InstallPrograms.ps1`, `BackupScript.ps1`, и `UpdateSystem.ps1`.

1. Скрипт очистки диска (ClearDisk.ps1):

# Ваш код для очистки диска

# Пример: удаление временных файлов

Remove-Item -Path «$env:TEMP\*» -Recurse -Force

# Используйте Invoke-Expression

Invoke-Expression -Command «.\ClearDisk.ps1»

# Или просто указывайте путь к файлу скрипта

2. Скрипт автоматической установки программ (InstallPrograms.ps1):

# Ваш код для автоматической установки программ

# Пример: установка программы Chocolatey и установка пакетов

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

choco install packageName -y

# Используйте Invoke-Expression

Invoke-Expression -Command «.\InstallPrograms.ps1»

# Или просто указывайте путь к файлу скрипта

3. Скрипт резервного копирования (BackupScript.ps1):

# Ваш код для создания резервной копии

# Пример: копирование файлов в другую директорию

$sourcePath = «C:\Path\To\Source»

$destinationPath = «D:\Backup»

Copy-Item -Path $sourcePath -Destination $destinationPath -Recurse

# Используйте Invoke-Expression

Invoke-Expression -Command «.\BackupScript.ps1»

# Или просто указывайте путь к файлу скрипта

4. Скрипт автоматического обновления системы (UpdateSystem.ps1):

# Ваш код для автоматического обновления системы

# Пример: обновление всех установленных модулей PowerShell

Update-Module -Name $_.Name -Force

# Используйте Invoke-Expression

Invoke-Expression -Command «.\UpdateSystem.ps1»

# Или просто указывайте путь к файлу скрипта

Убедитесь, что вы находитесь в той же директории, что и ваши скрипты, или укажите полный путь к файлу скрипта.

В этой статье мы коснулись всех аспектов создания, запуска и использования скриптов в Windows. Надеемся, что эти советы и примеры помогут вам освоить этот увлекательный мир автоматизации и сделают вашу работу более эффективной и приятной.

Как запустить скрипт через PowerShell с параметрами?

Запуск осуществляется аналогично запуску обычной программы или bat-файла с параметрами. Например, чтобы запустить скрипт с параметрами из командной строки, используйте следующую команду:

PowerShell -executionpolicy RemoteSigned -file <имя_скрипта> param1 param2 «еще один текстовый параметр«

В самом скрипте параметры могут быть получены так:

param ($var1, $var2, $var3)

В интегрированной среде PowerShell ISE скрипт с параметрами можно запустить аналогично, используя область команд.

Выполнение скриптов в PowerShell

Выполнение скриптов в PowerShell

PowerShell представляет собой новую командную оболочку для операционной системы Windows, созданную Microsoft с целью полного замещения и улучшения cmd. Эта оболочка уже включена в состав операционных систем Windows 7 и выше. Если у вас старая версия операционной системы или вы хотите загрузить более новую версию PowerShell. Windows — операционная система, пользующаяся огромной популярностью среди миллионов пользователей по всему миру. В ее арсенале множество функций и возможностей, однако некоторые из них остаются недостаточно известными обычным пользователям. В данной статье мы расскажем о нескольких полезных сценариях, способных сделать вашу работу с Windows более эффективной и удобной.

Политика исполнения PowerShell-скриптов представляет собой механизм безопасности, управляющий условиями загрузки конфигурационных файлов и запуска сценариев в данной среде. Её основное предназначение — предотвращение выполнения потенциально вредоносных сценариев.

Полезные скрипты PowerShell для Windows

Выполняемые скрипты Windows

Это скрипты, которые могут быть выполнены в среде операционной системы Windows и обычно предназначены для автоматизации различных задач. Включают в себя bat-скрипты (командные файлы), PowerShell-скрипты, а также другие типы скриптов, которые можно выполнять в Windows. Общее отличие между bat-скриптами и PowerShell-скриптами заключается в языке программирования, используемом для написания команд и инструкций. Bat-скрипты используют язык пакетных команд, который является устаревшим и имеет ограниченные возможности по сравнению с PowerShell, который представляет более современный и мощный язык с разнообразными функциональными возможностями для автоматизации задач в Windows.

Какое расширение имеют файлы скриптов PowerShell

PowerShell-скрипты имеют расширение *.ps1*, и для их выполнения часто требуется предварительная настройка политики выполнения скриптов (Execution Policy), чтобы разрешить запуск скрипта через PowerShell в системе.

Как запустить скрипт в PowerShell?

Существует несколько способов запуска скрипта, вот основные из них:

  1. Запустить оболочку PowerShell и выполнить в ней скрипт, указав путь к файлу и его имя (например, C:\Scripts\test.ps1) или перейдя в каталог скрипта командой cd C:\Scripts и выполнить его с помощью команды .\test.ps1.
  2. Оболочку можно найти и запустить разными способами. Один из них — через меню «Пуск». Для Windows 7 пройдите по следующему пути: «Все программы» — «Стандартные» — «Windows PowerShell» и запустите оболочку «Windows PowerShell». Для Windows 10 найдите группу по букве «W» и в ней выберите «Windows PowerShell».
  3. Запустить «Интегрированную среду сценариев Windows PowerShell ISE», которая представляет собой среду разработки, позволяющую редактировать и отлаживать скрипты PowerShell. Откройте программу, выберите «Открыть» или в меню Файл выберите «Открыть» и укажите нужный скрипт, затем нажмите F5 или кнопку «Выполнить скрипт». Поиск Windows PowerShell ISE можно осуществить так же, как и оболочки PowerShell, через меню «Пуск».
  4. Запустить стандартный командный интерфейс и ввести следующую команду:

PowerShell -file <имя_скрипта> (например: PowerShell -file myscript.ps1)

Если вы ранее не запускали скрипты PowerShell, возможно, вы получите сообщение о том, что файл <имя_скрипта> не может быть загружен, так как выполнение скриптов запрещено для данной системы. В этом случае введите «get-help about_signing» для получения дополнительной информации. Это связано с безопасностью и предотвращением случайного выполнения вредоносного кода, поэтому все скрипты должны быть подписаны цифровой подписью.

Полезные сценарии для Windows

1. Скрипт выключения Windows (или перезагрузки):

Простейшая операция выключения компьютера. Откройте блокнот и введите:

shutdown -s -t 0

Сохраните файл с расширением *.cmd* (например, *shutdown.cmd*). При запуске этого файла компьютер выключится. Замените «-s» на «-r» для перезагрузки. Параметр «-t» устанавливает таймер; в данном случае, он равен 0 секунд, но можно установить, например, на 60 для выключения через 60 секунд.

2. Удаление ненужных приложений:

С помощью следующего скрипта можно удалить предустановленные приложения:

Замените *APPNAME* на название ненужного приложения. Хотя удаление можно выполнить стандартным способом или через программы, этот скрипт делает процесс более удобным.

3. Управление процессами:

Воспользуйтесь PowerShell для борьбы с медленными процессами. Выведите все службы:

Или получите информацию о конкретной службе с кодовым именем *NAME*:

Создайте файл, который закрывает процессы с повышенным потреблением ресурсов:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Замените *ANTIVIRUS* и *BROWSER* на соответствующие названия.

4. Переименование группы файлов:

Решите проблему однотипных файлов с помощью скрипта группового переименования:

$path = «$comp\desktop\journey\russia»

$filter = ‘*.jpg’

Укажите путь, расширение и выполните замены в строке.

5. Поиск файлов:

Используйте PowerShell для поиска файлов в директории:

Для более сложного поиска в подпапках:

Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force

6. Справка:

Пользуйтесь командой *Get-Help* для получения информации:

Для более подробной справки по конкретной команде:

Get-Help —Name *CMDLET*

7. Получение информации о системе:

Используйте PowerShell для получения данных о системе, например, уровне заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms

Информация об архитектуре процессора удаленного компьютера:

Проверка прав администратора текущего пользователя:

Эти простые и полезные сценарии помогут вам эффективнее управлять вашей системой Windows.

Выполнение SQL запросов из PowerShell через MySQL коннектор

Установить mysql коннектор в windows

Примечание. Не обязательно ставить полную версию MySQL .NET Connector, достаточно скопировать на компьютер файл библиотеки MySql.Data.dll.

#подключение библиотеки MySql.Data.dll

Powershell - добавляем данные в таблицу MySQL

Следующий скрипт с помощью SELECT запроса получит данные из таблицы БД и покажет их в консоли PowerShell.

PowerShell - Select запрос из таблицы mySQL

Bat-скрипты Windows

Bat-скрипты, или файлы пакетных команд (Batch-файлы), представляют собой текстовые файлы, содержащие команды и инструкции для выполнения в командной строке Windows. Основаны на языке пакетных команд (Batch scripting language). Расширение файла: *.bat* (например, *myscript.bat*).

Пример простого bat-скрипта:

Какой прокси-сервер PowerShell следует использовать?

Ответ на этот вопрос меняется в зависимости от того, чего вы хотите достичь с помощью запроса Invoke-WebRequest. Чтобы найти подходящий прокси-сервер PowerShell для ваших нужд, ознакомьтесь с различными типами доступных прокси-серверов:

  • Прокси-серверы центров обработки данных: они быстрые и дешевые, но сайты могут легко обнаружить и заблокировать их из-за их идентифицируемых диапазонов IP-адресов.
  • Резидентные прокси-серверы: они предлагают ротацию подлинных IP-адресов с реальных устройств в определенных местах. Это означает, что они могут гарантировать высокий уровень анонимности. Резидентные прокси-серверы идеально подходят для доступа к сайтам, использующим географические ограничения, или для обхода мер по борьбе с ботами.
  • Прокси-серверы интернет-провайдеров (ISP): они безопасны, быстры и очень надежны, поскольку предоставляют статические IP-адреса устройств, зарегистрированных у интернет-провайдеров. Прокси-серверы ISP также называют резидентными статическими прокси-серверами, и они являются идеальным решением для мониторинга оптимизации поисковых систем (SEO) и исследования рынка.
  • Мобильные прокси-серверы: они предоставляют IP-адреса с реальных мобильных устройств для обеспечения высокого уровня анонимности. Они полезны для доступа к приложениям, сайтам или контенту, специально разработанному для мобильных устройств.

Как использовать прокси HTTPS и SOCKS в PowerShell

Если вам требуется использовать прокси-сервер HTTPS или SOCKS, необходимо обновить PowerShell до версии 7.x и выше. В противном случае Invoke-WebRequest завершится ошибкой:

Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой https.

Или в случае прокси-сервера SOCKS:

Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой socks.

При работе с прокси-серверами HTTPS или SOCKS в PowerShell 7.x структура команд Invoke-WebRequest остается прежней:

Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

Отличия заключаются в том, что будет использовать https, socks4, socks4a, socks5 или socks5a вместо http.

Если вы попытаетесь вызвать запрос через прокси-сервер, использующий протокол, отличный от указанного выше, вы получите следующую ошибку:

Invoke-WebRequest: Only the 'http', 'https', 'socks4', 'socks4a' and 'socks5' schemes are allowed for proxies.

Таким образом, полный пример прокси-запроса Invoke-WebRequest SOCKS выглядит так:

Invoke-WebRequest -Proxy "socks5://94.14.109.54:3567" "http://httpbin.org/ip"

As you can expect, the result will be:

StatusCode        : 200

StatusDescription : OK

Content           : {

                      "origin": "94.14.109.54"

                    }

RawContent        : HTTP/1.1 200 OK

                    Connection: keep-alive

                    Access-Control-Allow-Origin: *

                    Access-Control-Allow-Credentials: true

                    Content-Length: 31

                    Content-Type: application/json

                    Date: Thu, 01 Feb 2024 12:47:56 GMT...

Forms             : {}

Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,

                    true], [Content-Length, 31]...}

Images            : {}

InputFields       : {}

Links             : {}

ParsedHtml        : mshtml.HTMLDocumentClass

RawContentLength  : 31

Командные скрипты Windows

Это общий термин, который включает в себя различные типы скриптов и командных файлов, используемых в операционной системе Windows для автоматизации задач. Включают в себя как скрипты на языке командной строки (например, скрипты CMD), так и на более современных языках, таких как PowerShell. Например, Bat-скрипты (*.bat), PowerShell-скрипты (*.ps1), а также другие сценарии, созданные для автоматизации определенных задач.

Как запустить скрипт PowerShell с помощью ярлыка?

Это можно сделать двумя способами:

  1. Создать файл bat/cmd, в котором прописать команду для запуска скрипта (с параметрами, как описано выше).
  2. Создать ярлык на PowerShell, который находится в папке c:\Windows\System32\WindowsPowerShell\v<версия>\. В свойствах ярлыка в поле «Объект» добавьте необходимые параметры.

Таким образом, например, чтобы запустить скрипт PowerShell при входе пользователя, просто создайте ярлык, как описано во втором пункте, и поместите его в автозагрузку. Также создание ярлыка с использованием одного из вышеописанных методов позволяет легко запускать скрипт от имени администратора или от имени любого другого пользователя, как обычную программу.

Скриптовый язык PowerShell — мощный инструмент для решения различных задач. Однако следует использовать его с осторожностью, поскольку он может быть использован не только для полезных, но и для вредоносных целей. Будьте внимательны при работе с ним.

Скрипты PowerShell для администратора

Как указать прокси-сервер HTTP в Invoke-WebRequest

Прежде чем начать, запустите следующую команду в PowerShell:

Invoke-WebRequest "https://httpbin.org/ip"

That should print something like:

StatusCode        : 200

StatusDescription : OK

Content           : {

                      "origin": "194.34.233.12"

                    }

RawContent        : HTTP/1.1 200 OK

                    Connection: keep-alive

                    Access-Control-Allow-Origin: *

                    Access-Control-Allow-Credentials: true

                    Content-Length: 32

                    Content-Type: application/json

                    Date: Thu, 01 Feb 2024 10:46:14 GMT...

Forms             : {}

Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,

                    true], [Content-Length, 32]...}

Images            : {}

InputFields       : {}

Links             : {}

ParsedHtml        : mshtml.HTMLDocumentClass

RawContentLength  : 32

Если вы хотите получить доступ только к полю «Контент», вы можете сделать это следующим образом:

$response = Invoke-WebRequest "https://httpbin.org/ip"

$response.Content

This would print:

{

  "origin": "194.34.233.12"

}

Использование параметра командной строки

Invoke-WebRequest предлагает флаг -Proxy для указания URL-адреса прокси-сервера для запроса.

Итак, синтаксис использования Invoke-WebRequest на прокси-сервере выглядит следующим образом:

Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

Если теперь вы выполните эту команду PowerShell:

Invoke-WebRequest -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"
Invoke-WebRequest -Uri "http://httpbin.org/ip" -Proxy "http://brd.superproxy.io:22225" -ProxyCredential (New-Object System.Management.Automation.PSCredential("brd-customer-CUSTOMER_ID-zone-ZONE’S_NAME", ("ZONE’S_PASSWORD" | ConvertTo-SecureString -AsPlainText -Force)))

The result should be:

StatusCode        : 200

StatusDescription : OK

Content           : {

                      "origin": "190.6.23.219"

                    }

RawContent        : HTTP/1.1 200 OK

                    Connection: keep-alive

                    Access-Control-Allow-Origin: *

                    Access-Control-Allow-Credentials: true

                    Content-Length: 31

                    Content-Type: application/json

                    Date: Thu, 01 Feb 2024 12:36:56 GMT...

Forms             : {}

Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,

                    true], [Content-Length, 31]...}

Images            : {}

InputFields       : {}

Links             : {}

ParsedHtml        : mshtml.HTMLDocumentClass

RawContentLength  : 31

Примечание: не забывайте, что бесплатные прокси-серверы недолговечны! К тому времени, когда вы прочитаете это руководство, маловероятно, что вышеуказанный сервер все еще будет работать. В случае ошибки замените его новым прокси-сервером.

Использование переменных окружения

Начиная с версии PowerShell 7.0, Invoke-WebRequest поддерживает конфигурацию прокси-сервера с помощью переменных окружения

Таким образом, другой способ использования прокси-сервера PowerShell в Invoke-WebRequest заключается в установке следующих двух окружений:

  • HTTP_PROXY — это URL-адрес прокси-сервера, используемый для HTTP-запросов;
  • HTTPS_PROXY — это URL-адрес прокси-сервера, используемый для HTTPS-запросов.

В Windows можно задать две переменные окружения, используя следующий синтаксис PowerShell:

$env:HTTP_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

$env:HTTPS_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

В нашем примере команды будут выглядеть следующим образом:

$env:HTTP_PROXY = "http://190.6.23.219:999"

$env:HTTPS_PROXY = "http://190.6.23.219:999"

В macOS и Linux вам необходимо использовать следующий синтаксис:

export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

Итак, две команды будут следующими:

export http_proxy="http://190.6.23.219:999"

export https_proxy="http://190.6.23.219:999"

Отныне каждый запрос Invoke-WebRequest будет проходить через указанные прокси-серверы без необходимости добавлять опцию -Proxy. После настройки envs запустите следующую команду:

Invoke-WebRequest "https://httpbin.org/ip"

You will get the same result as before:

StatusCode        : 200

StatusDescription : OK

Content           : {

                      "origin": "190.6.23.219"

                    }

RawContent        : HTTP/1.1 200 OK

                    Connection: keep-alive

                    Access-Control-Allow-Origin: *

                    Access-Control-Allow-Credentials: true

                    Content-Length: 31

                    Content-Type: application/json

                    Date: Thu, 01 Feb 2024 12:36:56 GMT...

Forms             : {}

Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,

                    true], [Content-Length, 31]...}

Images            : {}

InputFields       : {}

Links             : {}

ParsedHtml        : mshtml.HTMLDocumentClass

RawContentLength  : 31

Чтобы отключить прокси-серверы Invoke-WebRequest, отключите переменные окружения с помощью:

$env:HTTP_PROXY = ""

$env:HTTPS_PROXY = ""

Or on macOS and Linux:

unset HTTP_PROXY

unset HTTPS_PROXY

Как сделать и запустить скрипт PowerShell

Создать скрипт PowerShell довольно просто. Вот шаги, которые вы можете выполнить, чтобы создать свой первый скрипт:

1. Откройте редактор PowerShell ISE:

PowerShell ISE (Integrated Scripting Environment) предоставляет удобную среду для написания и отладки скриптов. Вы можете его найти в меню «Пуск» (Start) под разделом «Стандартные» (Standard) или выполнить команду `PowerShell_ise` в командной строке.

2. Напишите свой скрипт:

В окне редактора PowerShell ISE напишите свой скрипт. Ниже приведен пример простого скрипта, который выводит «Hello, World!» в консоль:

Write-Host «Hello, World!»

3. Сохраните скрипт:

  • Нажмите `Ctrl + S` или выберите «Файл» (File) -> «Сохранить» (Save).
  • Укажите имя файла и добавьте расширение `.ps1` (например, `MyScript.ps1`).

4. Запустите скрипт:

  • Выберите весь текст скрипта.
  • Нажмите `F5` или выберите «Запустить сценарий» (Run Script) в PowerShell ISE.

Примеры более сложных скриптов:

#Скрипт, создающий новую папку:

$folderPath = «C:\Path\To\NewFolder»

New-Item -ItemType Directory -Path $folderPath

#Скрипт, удаляющий все файлы старше 7 дней в папке:

$folderPath = «C:\Path\To\Folder»

$limitDate = (Get-Date).AddDays(-7)

#Скрипт, проверяющий статус службы:

Write-Host «The status of service $serviceName is: $($serviceStatus.Status)»

Ваши скрипты могут включать более сложные команды, использовать условия, циклы и вызывать функции. Как только вы освоите основы, вы сможете создавать более мощные и гибкие скрипты PowerShell.

Полезные скрипты PowerShell для Windows

Скрипты для Windows — не просто строки кода, а волшебные ключи, открывающие дверь в мир автоматизации. В руках умелого пользователя они становятся инструментом, способным не только сэкономить время, но и превратить рутинные задачи в захватывающее путешествие по потокам байтов и командам.

Необходимые советы и рекомендации

Ознакомьтесь с полезными уловками и ценными советами по работе с прокси-сервером PowerShell Invoke-WebRequest на профессиональном уровне.

Игнорирование конфигурации прокси-сервера PowerShell

Если вы хотите запретить Invoke-WebRequest использовать настроенный прокси-сервер PowerShell для чтения из переменных окружения, вы можете воспользоваться параметром -NoProxy следующим образом:

Invoke-WebRequest -NoProxy <Uri>

Эта команда предписывает Invoke-WebRequest связаться с без использования прокси-сервера.

Чтобы убедиться в работоспособности данного подхода, настройте прокси-сервер в envs и запустите его:

Invoke-WebRequest -NoProxy "https://httpbin.org/ip"
Avoid SSL Certificate Errors

При использовании прокси-сервера HTTP ваши запросы могут не выполняться из-за ошибок SSL-сертификата. Чтобы избежать этого, задайте параметр -SkipCertificateCheck:

Invoke-WebRequest -SkipCertificateCheck -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

– SkipCertificateCheck помогает избежать ошибок сертификатов, разрешая небезопасные подключения к серверу. Имейте в виду, что использование этого параметра небезопасно. Задавайте его только при работе с известными хостами.

Например, вы можете связываться с HTTPBin через прокси-сервер, обходя проблемы с SSL, с помощью следующего:

Invoke-WebRequest -SkipCertificateCheck -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"

Заключение

Из этого руководства по прокси-серверу PowerShell вы узнали, что представляет собой инструмент Invoke-WebRequest, как он работает и как его использовать с прокси-сервером HTTP/HTTPS/SOCKS. Как оказалось, нельзя полагаться на прокси-серверы от бесплатных поставщиков. Поэтому единственное решение, которое необходимо принять, — это выбор поставщика услуг прокси-серверов. Экономьте время и энергию и обращайтесь непосредственно к Bright Data — лучшей компании на рынке в этой области.

Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20 000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:

В целом, это одна из крупнейших и самых надежных на рынке прокси-сетей, ориентированных на скрейпинг. 

Поговорите с одним из наших торговых представителей и узнайте, какие продукты Bright Data лучше всего отвечают вашим потребностям.

Кредитная карта не требуется

Оставьте комментарий