Особенности
Включение выполнения скриптов в системе
Если при запуске скрипта PowerShell появляется ошибка Выполнение сценариев отключено в этой системе нужно разрешить выполнение сценариев командой PowerShell для текущего пользователя
Set-ExecutionPolicy Unrestricted -Scope CurrentUserИли для всех пользователей компьютера
Set-ExecutionPolicy Unrestricted -Scope LocalMachineОбратно отключить выполнение сценариев
Set-ExecutionPolicyRestricted -Scope CurrentUser
Не печатаются заглавные буквы в консоли PowerShell
Это может происходить, когда PowerShell запускается при русской раскладке. Такое происходит из за проблемы в модуле PSReadLine, для решения проблемы нужно переустановить этот модуль.
Для этого сначала нужно удалить модуль
Remove-Module PSReadLineудалить папку
C:\Program Files\WindowsPowerShell\Modules\PSReadLineзатем установить модуль командой
Install-Module PSReadLine
Запуск скрипта через планировщик задач
Скрипт PowerShell не запускается напрямую из планировщика задач, если указать напрямую путь к скрипту, он откроется в блокноте. Для того, чтобы он запустился из планировщика в строке Программа или сценарий нужно указать powershell.exe, а в строке Добавить аргументы указать путь к скрипту следующим образом -File "C:\script.ps1".
Запуск скрипта по двойному нажатию ЛКМ
По умолчанию при двойном нажатии ЛКМ по файлу скрипта, он открывается для изменения в блокноте, а не запускается.
Для того, чтобы скрипт запускался по двойному нажатию ЛКМ нужно открыть контекстное меню файла с расширением ps1 нажатием ПКМ, нажать на строку Открыть с помощью ⇒ Выбрать другое приложение, поставить галочку Всегда использовать это приложение для открытия .ps1 файлов, затем нажать Еще приложения ⇒ Найти другое приложение на этом компьютере и выбрать exe файл запускающий PowerShell по пути
Для того, чтобы скрипт запускался по двойному нажатию ЛКМ нужно открыть контекстное меню файла с расширением ps1 нажатием ПКМ, нажать на строку Открыть с помощью ⇒ Выбрать другое приложение, поставить галочку Всегда использовать это приложение для открытия .ps1 файлов, затем нажать Еще приложения ⇒ Найти другое приложение на этом компьютере и выбрать exe файл запускающий PowerShell по пути
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exeпосле этого все файлы с расширением .ps1 будут запускаться по двойному нажатию ЛКМ.
Или же можно создать bat файл и в нем прописать
PowerShell.exe -executionpolicy bypass -file 'c:\example.ps1'тогда скрипт PowerShell запуститься по двойному нажатию ЛКМ на этом bat файле.
Запуск PowerShell через адресную строку проводника
Чтобы не прописывать путь к папке в консоли PowerShell можно зайти в нужную папку через проводник и в адресной строке проводника написать powershell, тогда консоль PowerShell откроется в текущей папке.
Сеть
- Test-NetConnection -ComputerName HOSTNAME -Port NUMPORT проверка состояния порта (Win8.1 и выше, PS4.0)
- Test-NetConnection -ComputerName HOSTNAME -Port 25 проверка порта по номеру
- Test-NetConnection -ComputerName HOSTNAME -CommonTCPPort RDP проверка порта по названию использующей порт службы
- Изменить профиль сети с Public на Private
- Get-NetConnectionProfile вывести список сетевых интерфейсов и применённые к ним профили сети
- Set-NetConnectionProfile -InterfaceIndex 10 -NetworkCategory Private изменение профиля для 10 сетевого подключения, индекс которого отображается в выводе предыдущей команды
Разное
- start <программа или скрипт> запуск программы или скрипта
- start <example.bat> -Wait запуск скрипта и ожидание пока он выполниться
- sleep 5 ожидание 5 секунд
- get-service вывод списка служб
- findstr аналог grep из linux, например get-service | findstr /i "xbox" выведет список служб которые в названии содержат xbox
- Set-Alias -Name kubectl -Value C:\Kubectl\kubectl создание алиаса
- cat (Get-PSReadlineOption).HistorySavePath вывод истории команд в консоль
- notepad (Get-PSReadlineOption).HistorySavePath открытие истории команд в блокноте
- Get-ScheduledTask получение списка задач
- Start-ScheduledTask <task-path>\<task-name> запуск задачи
- Stop-ScheduledTask <task-path>\<task-name> остановка запущенной задачи
- Disable-ScheduledTask -TaskName <task-path>\<task-name> отключение задачи
- Enable-ScheduledTask -TaskName <task-path>\<task-name> включение задачи
Скрипты
Нажатие клавиши
$key = New-Object -ComObject WScript.Shell
$key.SendKeys("{F11}")
В данном случае осуществляется нажатие на клавишу F11, коды клавиш можно посмотреть по ссылке.Удаление папок и файлов старше указанного количества дней
$path="C:\dir"
$dateDel = (Get-Date).AddDays(-14)
Get-ChildItem -Recurse -Path $path | Where-Object -Property CreationTime -lt $dateDel | Remove-Item -Recurse
в данном случае удаляются файлы и папки старше 14 дней.