Запуск powershell из bat файла и выполнение команды

Запуск powershell из bat файла и выполнение команды

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

Основные команды при написании

Приведем несколько основных команд, которые можно использовать при написании bat-файла:

  • echo – для вывода текста или переменных в командную строку или в файл.
  • set – для определения или изменения значения переменной.
  • if – для выполнения команд в зависимости от определенных условий.
  • for – для создания циклов и повторного выполнения команд.
  • call – для вызова другого bat-файла из текущего.
  • pause – для остановки выполнения скрипта и ожидания, пока пользователь не нажмет клавишу.
  • rem – для добавления комментариев в скрипт. Комментарии игнорируются интерпретатором bat-файлов.
  • cd – для перехода в другой каталог.
  • del – для удаления файлов. 
  • copy – для копирования файлов. 

Что такое bat-файл

Bat-файл – это текстовый файл, который содержит в себе набор команд для выполнения в командной строке. Такие файлы используются при работе с ОС Windows и обозначаются расширением .bat. Название bat-файла происходит от английского “batch file” – пакетный файл, продвинутые пользователи часто используют название “батник”. 

Bat-файлы используются для автоматизации задач и выполнения ряда команд, без применения ввода данных в командную строку. 

Зачем нужны bat-файлы:

  1. Автоматизация задач. Например, для повторяющихся типов действий: копирование, переименование файлов, создание резервных копий. Благодаря bat-файлам, можно запустить серию команд одним нажатием кнопки, что экономит время и не требует необходимость вводить однотипные команды вручную.
  2. Выполнение скриптов. Bat-файлы используют для выполнения скрипта на командном языке, например, CMD или PowerShell. Это позволяет создавать и запускать скрипты для выполнения сложных задач без необходимости запуска каждой команды по отдельности.
  3. Конфигурация системы. Bat-файлы могут использоваться для настройки и конфигурации операционной системы Windows, например, чтобы изменять системные переменные, устанавливать параметры безопасности, настраивать сетевые подключения.

Запуск powershell из bat файла и выполнение команды

Если вы ищите надежный выделенный сервер с операционной системой Windows, предлагаем воспользоваться услугой Windows VDS/VPS от RU-CENTER.

/ /

1

29.11.2023, 22:19. Показов 1440. Ответов 13


Author24 — интернет-сервис помощи студентам

Здравствуйте, только начал изучать програмирование и дали задание.
Нужно через батник выполнить эту команду в повершеле:
dism /online /enable-feature /all /featurename:IIS-ASP; dism /online /enable-feature /all /featurename:IIS-ASPnet45; dism /online /enable-feature /all /featurename:IIS-ASPnet; dism /online /enable-feature /all /featurename:IIS-ISAPIExtensions; start-service W3SVC; (Get-IISAppPool -name DefaultAppPool).start()
Помогите пожайлуста

/ /

29.11.2023, 22:19

Ответы с готовыми решениями:

/ /

Записей в блоге: 12

30.11.2023, 00:45

2

Самый лучший вариант – использование powershell -enc, т.к. батник не сломается от спецсимволов в команде.

Воспользуйтесь любой программой/сайтом для кодирования текста в Base64. Я предпочитаю этот сайт.

Закодированный текст передайте команде powershell -enc.
Ключ -ex bypass нужен для обхода политики выполнения скриптов.

P.S. Я сократил ключи PowerShell, полное название ключа -ex-ExecutionPolicy, а ключа -encEncodedCommand. Команда с сокращенными названиями работает, но документацию (если понадобится) придется искать по полному названию.

Windows Batch file
1
2
3
4
5
6
7
 off
 :: dism /online /enable-feature /all /featurename:IIS-ASP; dism /online /enable-feature /all /featurename:IIS-ASPnet45; dism /online /enable-feature /all /featurename:IIS-ASPnet; dism /online /enable-feature /all /featurename:IIS-ISAPIExtensions; start-service W3SVC; (Get-IISAppPool -name DefaultAppPool).start() :: Запуск PowerShellpowershell bypass 

/ /

30.11.2023, 18:03

3

Цитата
Сообщение от nekit270
Посмотреть сообщение

Воспользуйтесь любой программой/сайтом для кодирования текста в Base64

Пошик же умеет

PowerShell
1
Convert::ToBase64StringSystem.Text.Encoding::Unicode.GetBytes'Write-Host -for green "Hello World!"'
VwByAGkAdABlAC0ASABvAHMAdAAgAC0AZgBvAHIAIABnAHIAZQBlAG4AIAAiAEgAZQBsAGwAbwAgAFcAbwByAGwAZAAhACIA

PowerShell
1
 powershell.exe encodedCommand 
PowerShell
1
Text.Encoding::UTF8.GetStringconvert::FromBase64String

А может нужна обёртка dism? Запуск powershell из bat файла и выполнение команды

Получить список командлетов модуля dism

PowerShell
1
 Module dism Cmdlet Name feature

Или просто powershell /?

/ /

Записей в блоге: 12

30.11.2023, 19:33

4

iNNOKENTIY21, подходит много чего, именно поэтому специально написал “воспользуйтесь любой программой”. Лично мне удобнее через сайт, поэтому и указал его

/ /

30.11.2023, 20:37

5

nekit270, онлайн, это плохая идея.
Посылаете вы кодироваться в онлайн сервис:

PowerShell
1
 green 
PowerShell
1
powershell.exe encodedCommand 

/ /

Записей в блоге: 12

30.11.2023, 23:42

6

Цитата
Сообщение от iNNOKENTIY21
Посмотреть сообщение

онлайн, это плохая идея

если нет паранойи – вполне неплохая

кстати, кодировку с помощью powershell`а тоже можно “подправить”:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
# предположим, этот класс лежит где-нибудь в $PSHOME\Profile.ps1class convert
    static ToBase64String
       
   
  Convert::ToBase64StringSystem.Text.Encoding::Unicode.GetBytes'Write-Host -for green "Hello World!"' # чтобы окошко не закрывалось сразуstart cmd.exe "/c powershell.exe -enc $s & pause>nul"

/ /

01.12.2023, 09:21

7

Цитата
Сообщение от nekit270
Посмотреть сообщение

# чтобы окошко не закрывалось сразу

PowerShell
11
.ui.RawUI.ReadKey.ch

или powershell -noe -f .\name.ps1

/ /

Записей в блоге: 12

01.12.2023, 11:48

8

FlasherX, мне было лень перекодировать Base64. а вот за -noe спасибо

/ /

01.12.2023, 13:30

9

Цитата
Сообщение от nekit270
Посмотреть сообщение

мне было лень перекодировать Base64

Не понял, как это связано с цитатой? Запуск powershell из bat файла и выполнение команды

Добавлено: А, в коде FromBase64String нет, ясно.

/ /

02.12.2023, 16:54

10

Цитата
Сообщение от Hikiro
Посмотреть сообщение

Нужно через батник выполнить эту команду в повершеле

нет, не нужно.

сценарии автоматизации для оболочки powershell исполняются самой оболочкой powershell.
Такой сценарий размещается в файле с расширением .PS1

Для их исполнения не нужен ни интерпретатор cmd.exe, ни photoshop.exe, ни даже acad.exe,
а нужна либо оболочка powershell.exe ( рекомендована версия 5.1 ),
либо новая кросс-платформенная оболочка pwsh.exe ( версия 7.* )

PowerShell
1
2
3
4
5
6
dism online enablefeature all featurename:IISASP;
dism online enablefeature all featurename:IISASPnet45;
dism online enablefeature all featurename:IISASPnet;
dism online enablefeature all featurename:IISISAPIExtensions; W3SVC;
GetIISAppPool DefaultAppPool.start

/ /

Записей в блоге: 12

02.12.2023, 17:34

11

Цитата
Сообщение от volodin661
Посмотреть сообщение

нет, не нужно.
сценарии автоматизации для оболочки powershell исполняются самой оболочкой powershell.

Представим такую ситуацию: необходимо написать некий скрипт, который должен запускать обычный пользователь.
В таком случае либо понадобится “лаунчер” скрипта:

Windows Batch file
1
powershell bypass 

либо исполнение команды через ключи -command и -encodedCommand

PowerShell – прекрасный инструмент, но из-за политики выполнения по умолчанию требует дополнительных “финтов ушами” для запуска скриптов

/ /

03.12.2023, 18:40

12

В других операционных средах ( MacOS и Linux ) не требуется ничего, это чисто Windows-особенность

/ /

Записей в блоге: 12

03.12.2023, 18:49

13

volodin661, вопрос только, кто это будет исполнять. если ты думаешь, что среднестатистический юзер может без затруднений открыть powershell и вставить туда команду – ты переоцениваешь юзера.

если программа требует для ее запуска каких-либо действий, кроме двойного щелчка по файлу и установки через gui-установщик – это плохая программа для большинства пользователей

/ /

03.12.2023, 19:41

14

мне глубоко фиолетовы низко, средне и высокостатистические юзеры и какие-то высосанные из некоего пальца проблемы запуска сферических скриптов.

( Windows тем же цветом и тоже глубоко)

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

( запуск сценария powershell по двойному щелчку решается установкой
в ключе реестра
значения Default в

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noLogo -ExecutionPolicy unrestricted -file “%1”

Если скрипт не работает на некоторых ПК с Windows 7 и Windows 11, это может быть вызвано различиями в настройках или правах доступа. Пожалуйста, попробуйте следующие рекомендации:

1. Проверьте права доступа: Убедитесь, что у пользователя, запускающего скрипт, есть достаточные права доступа для чтения файлов на рабочем столе и записи на диск C.

2. Проверьте путь к файлу: Убедитесь, что путь к файлу “qwerty.zip” указан корректно и что файл действительно существует на рабочем столе.

3. Запустите скрипт с правами администратора: Попробуйте запустить скрипт с правами администратора, особенно на Windows 7, где могут потребоваться дополнительные разрешения.

4. Используйте PowerShell: Вместо batch-скрипта вы можете попробовать использовать скрипт на PowerShell, который может быть более совместим с разными версиями Windows. Вот пример PowerShell скрипта для копирования файла “qwerty.zip” с рабочего стола на диск C:

$source = "$env:USERPROFILE\Desktop"
$destination = "C:\"
$fileToFind = "qwerty.zip"
Get-ChildItem -Path $source -Recurse | Where-Object { $_.Name -eq $fileToFind } | ForEach-Object { Copy-Item $_.FullName $destination
}

Попробуйте эти рекомендации и сообщите, если у вас возникнут дополнительные вопросы или проблемы.

Для того чтобы запустить скрипт на PowerShell из batch-файла, вам нужно добавить команду вызова PowerShell с вашим скриптом. Вот как это можно сделать:

:/>  Стоит ли отключать файл подкачки на ssd

1. Создайте новый batch-файл (например, script.bat) и откройте его в текстовом редакторе.

2. Добавьте следующую строку в ваш batch-файл, чтобы вызвать PowerShell и выполнить ваш скрипт:

powershell.exe -ExecutionPolicy Bypass -File "путь_к_вашему_скрипту.ps1"

Замените “путьквашему_скрипту.ps1″ на путь к вашему скрипту на PowerShell (например, “C:\путь\к\вашему\скрипту.ps1”).

3. Сохраните изменения в batch-файле.

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

Попробуйте это решение и сообщите, если у вас возникнут дополнительные вопросы или проблемы.

Для того чтобы запустить скрипт на PowerShell из batch-файла, вам нужно добавить команду вызова PowerShell с вашим скриптом. Вот как это можно сделать:

1. Создайте новый batch-файл (например, script.bat) и откройте его в текстовом редакторе.

2. Добавьте следующую строку в ваш batch-файл, чтобы вызвать PowerShell и выполнить ваш скрипт:

powershell.exe -ExecutionPolicy Bypass -File "путь_к_вашему_скрипту.ps1"

Замените “путьквашему_скрипту.ps1″ на путь к вашему скрипту на PowerShell (например, “C:\путь\к\вашему\скрипту.ps1”).

3. Сохраните изменения в batch-файле.

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

Попробуйте это решение и сообщите, если у вас возникнут дополнительные вопросы или проблемы.

Для того чтобы внутри batch-файла отработал скрипт PowerShell без необходимости создания отдельного файла .ps1, вы можете вставить сам скрипт PowerShell прямо внутрь batch-файла. Вот пример того, как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1

В этом примере скрипт PowerShell вставлен внутрь batch-файла. Он создает временный файл tmp.ps1, в который записывает скрипт PowerShell, а затем запускает PowerShell для выполнения этого скрипта. После выполнения скрипта PowerShell временный файл удаляется.

Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Для того чтобы внутри batch-файла отработал скрипт PowerShell без необходимости создания отдельного файла .ps1, вы можете вставить сам скрипт PowerShell прямо внутрь batch-файла. Вот пример того, как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1

В этом примере скрипт PowerShell вставлен внутрь batch-файла. Он создает временный файл tmp.ps1, в который записывает скрипт PowerShell, а затем запускает PowerShell для выполнения этого скрипта. После выполнения скрипта PowerShell временный файл удаляется.

Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Для того чтобы продолжить выполнение batch-файла после отработки скрипта PowerShell без изменения вида консоли, можно использовать оператор call для запуска скрипта PowerShell. Вот пример того, как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
call powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.

В этом примере после выполнения скрипта PowerShell с помощью call, выполнение batch-файла продолжится без изменения вида консоли. После удаления временного файла tmp.ps1, можно добавить любые дополнительные команды или скрипты для продолжения работы batch-файла.

Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Для того чтобы продолжить выполнение batch-файла после отработки скрипта PowerShell без изменения вида консоли, можно использовать оператор call для запуска скрипта PowerShell. Вот пример того, как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
call powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.

В этом примере после выполнения скрипта PowerShell с помощью call, выполнение batch-файла продолжится без изменения вида консоли. После удаления временного файла tmp.ps1, можно добавить любые дополнительные команды или скрипты для продолжения работы batch-файла.

Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Если скрипт PowerShell меняет вид консольного окна batch-файла, это может быть вызвано тем, что PowerShell запускается в новом окне по умолчанию. Для того чтобы избежать этого, можно попробовать запустить PowerShell скрипт в том же окне консоли. Вот как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.

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

Если скрипт PowerShell меняет вид консольного окна batch-файла, это может быть вызвано тем, что PowerShell запускается в новом окне по умолчанию. Для того чтобы избежать этого, можно попробовать запустить PowerShell скрипт в том же окне консоли. Вот как это можно сделать:

@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.

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

Если скрипт PowerShell изменяет параметры консоли batch-файла, то это может быть вызвано тем, что PowerShell по умолчанию настраивает свои параметры консоли при запуске. Для того чтобы избежать этого, можно сохранить текущие параметры консоли перед запуском PowerShell и восстановить их после выполнения скрипта. Вот пример того, как это можно сделать:

@echo off
:: Сохраняем текущие параметры консоли
for /f "tokens=1,2 delims= " %%a in ('mode con ^| findstr Columns') do set original_columns=%%b
for /f "tokens=1,2 delims= " %%a in ('mode con ^| findstr Lines') do set original_lines=%%b
for /f "tokens=1,2 delims= " %%a in ('reg query "HKCU\Console" /v FaceName ^| find "REG_SZ"') do set original_font=%%b
for /f "tokens=1,2 delims= " %%a in ('reg query "HKCU\Console" /v FontSize ^| find "REG_DWORD"') do set original_fontsize=%%b
:: Ваш скрипт PowerShell
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
:: Восстанавливаем параметры консоли
mode con cols=%original_columns% lines=%original_lines%
reg add "HKCU\Console" /v FaceName /t REG_SZ /d %original_font% /f
reg add "HKCU\Console" /v FontSize /t REG_DWORD /d %original_fontsize% /f
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.

Этот скрипт сохраняет текущие параметры консоли (количество столбцов, количество строк, шрифт и размер шрифта), запускает скрипт PowerShell, а затем восстанавливает исходные параметры консоли. Попробуйте использовать этот подход и проверьте, помог ли он сохранить параметры консоли без изменений после выполнения скрипта PowerShell.

<# : @echo off setlocal powershell /noprofile /executionpolicy bypass^ "&{[ScriptBlock]::Create((Get-Content '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}" endlocal exit /b
#>
# здесь ваш код Powershell

А что именно он изменяет и на какой версии ОС? У меня, например, размер окон разный, но ничего не изменяется.
Попробуйте удалить подразделы ключа реестра:

HKEY_CURRENT_USER\Console

Переменные

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

:/>  Откуда берется кнопка win на ноутбуке где она находится? []

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

В bat-файлах можно использовать несколько типов переменных:

  1. Строковые переменные:
  1. Числовые переменные:

set /a NUMBER=5

  1. Параметры командной строки:
  1. Системные переменные:
  1. Временные переменные:

Синтаксис написания bat-файла

При написании bat-файла необходимо учитывать следующие правила:

  1. Комментарии в bat-файлах начинаются с символа REM (от английского remark – замечание) или :: (двойные двоеточия) и используются для пояснения кода. 
  2. Команды в bat-файле записываются на отдельных строках и выполняются последовательно, начиная с верхней строки. 
  3. При использовании переменных для хранения значений в bat-файле, их имена должны начинаться с символа %, и значения переменных устанавливаются с помощью оператора SET, например:
  1. В bat-файле можно использовать условные операторы, такие как IF и FOR, для выполнения команд в зависимости от определенных условий.
  2. С помощью оператора FOR можно создавать циклы для выполнения команд несколько раз или по списку значений.

Запуск bat-файла

Есть несколько способов запустить bat-файл:

  1. Найдите bat-файл с помощью Проводника и дважды щелкните на него. Это запустит файл. Команды в нем будут автоматически выполнены в командной строке. 
  2. Из командной строки. Откройте командную строку, перейдите в директорию, где находится bat-файл, и введите имя файла. Кликните Enter, чтобы запустить bat-файл.
  3. С помощью ярлыка на рабочем столе. Щелкните правой кнопкой мыши на bat-файле, выберите Отправить, затем выберите Рабочий стол (создать ярлык). После создания ярлыка переместите его на рабочий стол и дважды щелкните на нем для запуска.
  4. Через Планировщик заданий. Можно настроить запуск bat-файла в определенное время или при определенных событиях с помощью Планировщика заданий. Для этого откройте Планировщик, создайте новое задание и укажите путь к bat-файлу в разделе Действие.

Независимо от способа запуска bat-файла, команды в файле будут выполнены последовательно в командной строке, в том же окне или в новом, в зависимости от настроек и команд в самом файле.

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

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

Set-ExecutionPolicy RemoteSigned -Scope Process

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

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

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

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

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

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

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

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

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

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

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

Полезные сценарии для 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.

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

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

Скрипты 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. Надеемся, что эти советы и примеры помогут вам освоить этот увлекательный мир автоматизации и сделают вашу работу более эффективной и приятной.

:/>  Сервер Windows

Как сделать и запустить скрипт 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 — не просто строки кода, а волшебные ключи, открывающие дверь в мир автоматизации. В руках умелого пользователя они становятся инструментом, способным не только сэкономить время, но и превратить рутинные задачи в захватывающее путешествие по потокам байтов и командам.

Настройка планировщика заданий (периодический запуск)

Чтобы настроить запуск bat-файла в заданное время используйте планировщик задач Windows:

  1. Откройте Планировщик, нажав Win + R, введите taskschd.msc и нажмите Enter.

Запуск powershell из bat файла и выполнение команды

  1. Нажмите на Создать задачу в правой части окна.
  2. Во вкладке Основные введите имя задачи и описание (необязательно), нажмите Далее.
  3. Во вкладке Действия нажмите на Создать, в выпадающем меню выберите Запуск программы.
  4. В строке Программа/скрипт укажите путь к bat-файлу, который вы хотите запускать. Кликните на кнопку Обзор, чтобы найти bat-файл на компьютере.
  5. Настройте остальные параметры по вашему усмотрению: вы можете указать условия запуска, триггеры, параметры задачи и т.д.
  6. Когда все настройки сделаны, нажмите ОК, чтобы сохранить задачу.

Теперь ваш bat-файл будет запускаться автоматически в заданное время или по указанным условиям заданным в планировщике задач.

Bat-скрипты Windows

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

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

Как запустить скрипт в 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» для получения дополнительной информации. Это связано с безопасностью и предотвращением случайного выполнения вредоносного кода, поэтому все скрипты должны быть подписаны цифровой подписью.

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

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

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

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

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

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

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

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

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

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

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

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

Скрипты PowerShell Windows

Как создать bat-файл

Для создания bat-файла понадобится устройство с ОС Windows и любой текстовый редактор. Следуйте инструкции: 

  1. Откройте текстовый редактор, например, Блокнот или Visual Studio Code.
  2. Создайте в нем пустой файл.
  3. Запишите команду в том виде, как бы вы вводите ее в командную строку (каждую новую команду указывайте на отдельной строке). 
  4. Добавьте любую необходимую логику или условные операторы, например, if-else или циклы, чтобы определить, какие команды будут выполняться в зависимости от определенных условий.
  5. Сохраните файл с расширением .bat. Для этого выберите Сохранить как и укажите тип файла Все файлы, добавьте расширение .bat в конце имени файла (например, myscript.bat).
  6. Создания bat-файла завершено.

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

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

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

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

param ($var1, $var2, $var3)

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

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

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

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

Примеры bat-файлов

  1. Пример bat-файла, выводящего “Hello, World!”:
  1. Пример bat-файла, запрашивающего у пользователя имя и выводящего приветствие:

set /p name=Введите ваше имя: 

  1. Пример bat-файла, выполняющего математические операции:

set /a num1=5

set /a num2=2

set /a sum=%num1% + %num2%

set /a product=%num1% * %num2%

Запуск powershell из bat файла и выполнение команды

  1. Пример bat-файла, выполняющего цикл для перебора файлов в каталоге:

for %%i in (*.txt) do (

  1. Пример bat-файла, проверяющего наличие файла и выполняющего определенные действия:

if exist myfile.txt (

) else (

Заключение

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

С помощью bat-файлов можно экономить время и упрощать выполнение повторяющихся задач. При их правильном использовании можно значительно повысить эффективность и продуктивность работы пользователя.