16+
Лайт-версия сайта

Блог пользователя LexD

Блоги / Блог пользователя LexD


08 февраля ’2026   15:27
PowerShell Syntax

2026-02-07 20:00:46; 2026-02-08 19:26

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

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Изменение политики выполнения
Политика выполнения обеспечивает защиту компьютера от ненадежных скриптов. Изменение политики выполнения может подвергнуть компьютер риску нарушения системы безопасности, как описано в разделе справки, вызываемом командой about_Execution_Policies. Изменить политику выполнения?
[Y] Да - Y [N] Нет - N [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"):y

.ps1 -> ПКМ -> Выполнить с помощью PowerShell


==== Copy ====

Базовый синтаксис команды Copy-Item в PowerShell для копирования файла:

Copy-Item -Path <source> -Destination <destination>

-Path — указывает путь к файлу или папке, который нужно скопировать. Можно указать один путь или несколько путей, разделённых запятыми.
-Destination — указывает путь, куда нужно скопировать файл или папку. Если папка назначения не существует, Copy-Item создаст её автоматически.

Примеры:

Копирование одного файла. Например, нужно скопировать файл Report2024.pdf из каталога C:\\Projects в каталог C:\\Archives. Команда:

Copy-Item -Path "C:\\Reports\\Reports2024.pdf" -Destination "C:\\Archives"

Копирование нескольких файлов. Можно использовать подстановочные знаки. Например, чтобы скопировать все PDF-файлы из C:\\Projects в C:\\Archives, команда:

Copy-Item -Path "C:\\Projects\\*.pdf" -Destination "C:\\Archives"

Копирование содержимого каталога в существующий каталог. Например, содержимое каталога C:\\Logfiles копируется в существующий каталог C:\\Drawings. Команда:

Copy-Item -Path "C:\\Logfiles\\*" -Destination "C:\\Drawings" -Recurse


Параметры:
Некоторые параметры команды Copy-Item, которые можно использовать для управления процессом копирования файлов:

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

Ошибки:
Команда Copy-Item выдаёт ошибку, если файл с похожим именем существует. По умолчанию PowerShell запрашивает подтверждение перед перезаписью существующего файла или каталога в папке назначения.

==== Date \\ Time ====

$DateTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

$year = Get-Date -Format "yyyy"
$date = Get-Date -Format "yyyyMMdd"

==== Start Process ====

В PowerShell для выполнения файла .exe (исполняемого файла) используются разные синтаксисы в зависимости от метода запуска. PowerShell предоставляет несколько способов: с помощью оператора вызова (&), командлета Invoke-Expression или командлета Start-Process. xeox.comitechtics.comwikihow.com
Оператор вызова (&)
Синтаксис:

& "Path_to_exe\\yourfile.exe"

Пример: если файл с именем myfile.exe находится на диске C:, запустить его можно командой:

& "C:\\myfile.exe"

Особенности:

Оператор & позволяет выполнить строку текста, указанную в кавычках, как единую команду.
Поскольку оператор & не анализирует передаваемую команду, дополнительные параметры (аргументы) передаются также в виде текста, в кавычках.
Для удобства команду и аргументы можно поместить в переменные:

$exe = "C:\\Program Files\\Hello.exe"; $arg1 = "Hello"; $arg2 = "world"; & $exe $arg1 $arg2


Invoke-Expression
Синтаксис:

Invoke-Expression -Command "Path_to_exe\\yourfile.exe"

Пример: если файл myfile.exe находится на диске C:, запустить его можно командой:

Invoke-Expression -Command "C:\\myfile.exe"

Особенности:

Командлет Invoke-Expression работает примерно так же, как и оператор & — берёт текстовую строку и выполняет её в виде команды.
Однако у командлета есть недостаток — он не умеет работать с пробелами. Чтобы избежать ошибок, можно использовать дополнительные кавычки, например:

Invoke-Expression -Command "C:\\&#8242;Program Files&#8242;\\Hello.exe"


Start-Process
Синтаксис:

Start-Process -FilePath "Path_to_exe\\yourfile.exe"

Пример:

Start-Process -FilePath "C:\\myfile.exe"

Особенности:

Командлет Start-Process запускает указанный файл в виде процесса, используя метод Start .NET класса Process.
По умолчанию процесс выполняется в отдельном окне, которое закрывается по окончании процесса. Изменить такое поведение можно с помощью параметров, например:

Start-Process -FilePath "C:\\Program Files\\Hello.exe" -NoNewWindow -Wait

— команда запустится в текущем окне.
Start-Process позволяет передать в процесс дополнительные аргументы:

Start-Process -FilePath "C:\\Program Files\\Hello.exe" -ArgumentList "Hello, world" -NoNewWindow -Wait


Важно: реальные команды могут варьироваться в зависимости от конкретного файла .exe и случая использования. Чтобы найти правильные строки команд и переключатели, рекомендуется обратиться к руководству по использованию программного обеспечения.

==== Rename-Item ====

Синтаксис команды Rename-Item в PowerShell для переименования файла:

Rename-Item -Path <String> -NewName <String> [-Force] [-PassThru] [-WhatIf] [-Confirm] [<CommonParameters>]

Описание: командлет изменяет имя указанного элемента, не влияет на содержимое переименовываемого элемента. learn.microsoft.comgithub.com
Параметры
Некоторые параметры команды Rename-Item и их значение:

-Path — указывает путь к элементу, который нужно переименовать. Может быть полным путём или относительным к текущему каталогу.
-NewName — задаёт новое имя элемента. Нельзя использовать подстановочные знаки в значении параметра NewName.
-Force — заставляет командлет переименовывать элементы, которые иным образом изменить невозможно, например скрытые файлы или файлы, доступные только для чтения.
-PassThru — возвращает объект, представляющий переименованный элемент, который можно передать в другой командлет.
-WhatIf — показывает, что будет происходить, если команда запустится, без фактического запуска.
-Confirm — запрашивает подтверждение перед переименованием.

Важно: нельзя указать путь для значения параметра NewName, если путь не идентичен пути, указанному в параметре Path. В противном случае разрешено только новое имя.
Примеры:

Переименование файла daily_file.txt в monday_file.txt:

Rename-Item -Path "C:\\logfiles\\daily_file.txt" -NewName "monday_file.txt"

Переименование нескольких файлов:

Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '.txt','.log' }

— командлет Get-ChildItem находит все файлы в текущей папке с расширением файла .txt, а затем отправляет их в Rename-Item.

Ошибки:
При использовании команды Rename-Item могут возникать ошибки, например, «Cannot rename target (path/device name)».
Некоторые причины:

целевой путь не существует;
недостаточные разрешения;
целевой файл или каталог используется другим процессом;
конфликт имён (целевой объект уже существует);
недопустимые символы или зарезервированные имена;
длина пути превышает ограничения (MAX_PATH).

Решение: в большинстве случаев ошибки можно устранить, проверив целевой путь, разрешения, блокировки файлов и правила именования. Для операций с несколькими томами (например, из C: в D:) рекомендуется использовать командлет Move-Item вместо Rename-Item.

==== New-Item ====

Для создания папки в PowerShell используется командлет New-Item. Синтаксис похож на создание файла, но нужно указать тип «Directory» в параметре -ItemType.
Некоторые параметры команды:

-Path — указывает место, где создаётся элемент. adamtheautomator.com
-Name — даёт имя элемента. adamtheautomator.com
-ItemType — устанавливает тип создаваемого элемента (файл, папка и т. д.).
-Force — позволяет создать элемент, даже если каталоги в пути не существуют.

Важно: для создания папки в указанном месте должны быть необходимые разрешения.

Пример:

Создание папки «Temp» в пути «C:\\»:

New-Item -Name "Temp" -Path "C:\\" -ItemType Directory

Создание папки в другом каталоге:

New-Item -ItemType "Directory" -Path "C:\\ps-test\\scripts"

Имя нового элемента каталога «Скрипты» включается в значение параметра Path, а не указано в значении Name.
Создание структуры папки с полным путём:

New-Item -Path "C:\\ParentFolder\\ChildFolder" -ItemType Directory


Можно создать несколько папок одновременно:

New-Item -Path "C:\\Dir1", "C:\\Dir2", "C:\\Dir3" -ItemType Directory

Ошибки:

Ошибка «New-Item  : Could not find a part of the path» — возникает, если создать директорию и файл в одном пути. Исправить ошибку можно, указав параметр Force, который создаст весь путь целиком.
Ошибка, если не указан параметр Force, а папка уже существует. В этом случае PowerShell выдаст сообщение, что элемент уже существует. Чтобы перезаписать папку, можно добавить параметр Force.

Важно: имя (включая возможное расширение) должно быть уникальным среди всех файлов и папок внутри одной папки.

=== Подстановка символов (маскирование) ===

В PowerShell для подстановки символов (маскирования) используются подстановочные знаки (wildcards). Они применяются:

с оператором -like;

в параметрах командлетов, поддерживающих маски (например, Get&#8209;ChildItem, Get&#8209;Service и др.).

Основные подстановочные знаки

* — соответствует нулю или более символам
Пример:
powershell

"Hello" -like "H*" # True (начинается на H)
"PowerShell" -like "*Shell" # True (заканчивается на Shell)

? — соответствует одному любому символу в указанной позиции
Пример:
powershell

"bat" -like "b?t" # True (второй символ — любой)
"cat" -like "c?t" # True

[ ] — задает диапазон или набор символов

[a-l] — буквы от a до l;

[bc] — только b или c.
Примеры:
powershell

"book" -like "[a-l]ook" # True (первая буква в диапазоне a–l)
"cook" -like "[bc]ook" # True (первая буква b или c)

``` (backtick) — экранирует подстановочный знак, чтобы трактовать его как литерал
Пример:
powershell

"hello?" -like "hello`?" # True (символу ? соответствует буквально ?)

Практические примеры
1. Фильтрация файлов по расширению
powershell

Get-ChildItem C:\\Techdocs\\*.ppt # Все файлы с расширением .ppt

2. Поиск строк по шаблону
powershell

"PowerShell" -like "Power*" # True
"PowerPoint" -like "Power*" # True

3. Фильтрация массива строк
powershell

$values = @("PowerShell", "PowerPoint", "PowerApps", "Photoshop")
$values | Where-Object { $_ -like "Power*" }
# Вернёт: PowerShell, PowerPoint, PowerApps

4. Комбинированные условия
powershell

$string = "Apple"
if ($string -like "A*" -or $string -like "*e") {
Write-Host "Начинается на A или заканчивается на e"
}

5. Экранирование квадратных скобок в путях

Если имя файла содержит [ или ], их нужно экранировать:
powershell

Get-Item -LiteralPath "file[1].txt" # Используем -LiteralPath
# Или:
Get-Item "file``[1``].txt" # Экранируем backtick-ами

Важные нюансы

Регистр не учитывается при сравнении с подстановочными знаками.

Для точных совпадений используйте -eq, а не -like.

Оператор -like работает со строками; для регулярных выражений используйте -match.

Параметры командлетов, принимающие маски, обычно указаны в документации (например, -Path в Get-ChildItem).

Сравнение с другими операторами

-like — подстановочные знаки (*, ?, [ ]).

-match — регулярные выражения (мощнее, но сложнее).

-contains — проверка наличия элемента в массиве (не шаблон).

Пример различия:
powershell

"PowerShell" -like "*Shell*" # True (подстановочный знак)
"PowerShell" -match "Shell" # True (регулярное выражение)

=== echo; Write-Output ===

Основной синтаксис команды echo в PowerShell:

echo [argument]

Команда — псевдоним для командлета

Write-Output

В отличие от

Write-Host

Write-Output

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

Вывод текста на консоль. Например:

echo "Hello, Welcome to ShellGeek!"

— команда печатает текст «Привет, добро пожаловать в ShellGeek!».
Вывод значения переменной на консоль. Нужно сохранить значение в переменной и использовать имя переменной после команды echo. Например:

$strMsg = "Ultimate guide to PowerShell echo variable!"

echo "$strMsg"

— команда выводит значение переменной на консоль.
Перенаправление вывода в файл. Например:

echo "Hello, Welcome to ShellGeek!" > welcome.txt

— команда создаёт файл

welcome.txt

и записывает вывод «Здравствуйте, добро пожаловать в ShellGeek!» в файл.
Объединение нескольких строк. Например:

echo "Hello, " "World!"

— команда выводит «Hello, World!».

Ошибки

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

Get-EnvironmentVariable

или получить доступ к переменной окружения с помощью

$env:PATH

Команда echo в PowerShell позволяет выводить форматированный текст с помощью командлетов Format-. Некоторые из них:

Format-Custom. Настраивает вывод с разными видами представления.
Format-Hex. Показывает данные в шестнадцатеричном формате.
Format-List. Создаёт списки свойств объектов.
Format-Wide. Отображает свойство одного объекта, занимающее весь экран.
Format-Table. Представляет данные в форме таблицы.

Например, чтобы отформатировать вывод в виде таблицы, нужно выполнить команду:

echo «Number», «Name», «Age», «Location» | Format-Table

Также для форматирования вывода можно использовать оператор -f, который позволяет форматировать строку и включать переменные.

В синтаксисе команды echo в PowerShell для экранирования символов используются обратные кавычки (`), одинарные кавычки или двойные двойные кавычки. Это позволяет включать специальные символы (например, двойные кавычки) внутри строки, не завершая её.

Правила

Обратные кавычки (`) — наиболее распространённый способ экранировать двойные кавычки. Символ указывает PowerShell рассматривать следующую двойную кавычку как литерал, а не как разделитель строки.
Одинарные кавычки — при использовании в качестве разделителей строки любые двойные кавычки внутри строки рассматриваются как литералы, без необходимости в экранирующем символе.
Двойные двойные кавычки — полезны при работе со строками, содержащими несколько двойных кавычек. Каждая пара двойных кавычек интерпретируется как один литерал.

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

Примеры

Экранирование двойных кавычек:

$exampleString = "This is a

"double quote

" within a string."

— обратный кавычок (`) экранирует двойные кавычки, позволяя включить их внутри строки.

Write-Host "She said,

"Hello World!

""

— обратный кавычок (`) экранирует двойную кавычку, чтобы PowerShell не завершил строку раньше.
Экранирование кавычек внутри строки, заключённой в одинарные кавычки:

'Это ''экранированная'' кавычка'

— простое удвоение одинарных кавычек воспринимается как один литерал кавычки внутри строки. Выведет:

Это 'экранированная' кавычка

Экранирование обратной косой черты (если требуется) — обратная косая черта сама должна быть экранирована с помощью ещё одной обратной косой черты. Например:

echo "C:\\Users"

— обратная косая черта

\\

экранируется с помощью ещё одной обратной косой черты.
Просмотров: 26   Комментариев: 0   Перейти к комментариям
29 июня ’2025   16:33
Для ввода пароля из сценария bash:
printf "Password" | sudo -S <command>

Дата в виде ГГГГ-ММ-ДД, День_недели, чч:мм:сс  :
$(date '+%Y-%m-%d, %A, %H:%M:%S')
равнозначно:
$(date '+%F, %A, %T')

Экранирование escape-последовательностей в echo (перевод строки, табуляция):
echo -e "текст \n\t\t\t \n текст"

Синтаксис 'if' для соблюдения нескольких условий:
if [ -f condition1 ] && [ -f condition2 ] && [ -f condition3 ]
then
else
fi

Бесконечный цикл:
while  :
do
function
command
done

Команда cut
Аргументы, обязательные для длинных параметров, обязательны и для коротких.
-b, --bytes=СПИСОК выбрать только заданные байты
-c, --characters=СПИСОК выбрать только заданные символы
-d, --delimiter=РАЗДЕЛИТЕЛЬ использовать для разделения полей РАЗДЕЛИТЕЛЬ вместо табуляции
-f, --fields=СПИСОК выбрать только заданные поля; также печатать
все строки, не содержащие разделителей, если
только не задан параметр -s
-n (игнорируется)
--complement дополнить множество выбранных байт, символов
или полей
-s, --only-delimited не печатать строки, не содержащие разделителей
--output-delimiter=СТРОКА использовать СТРОКУ для разделения полей при выводе, по умолчанию используется разделитель для ввода
-z, --zero-terminated разделитель строк NUL, а не символ новой строки

Чтобы вырезать символы, следует указать их порядковые номера. Важно помнить о том, что если числовое значение превысит количество символов в строке, команда не будет выполнена.
cut -c 12,31,45

Чтобы вырезать из текстового файла диапазон символов, нужно напечатать в терминале следующую команду:
cut -c 7-34

Трюк с дефисом возле числа:
cut -c 12-
Будет вырезана последовательность символов, начиная с двенадцатого и заканчивая последним в строке.

А чтобы вырезать символы, начиная с первого и заканчивая двенадцатым, дефис следует переместить влево:
cut -c -12
Просмотров: 86   Комментариев: 0   Перейти к комментариям
23 мая ’2025   19:22
1. Windows 7 Home Basic
Первая ОС.
Снимок: https://ibb.co/z69kc8n

2. Linux Mint 19.1. Cinnamon 4.
Весна 2019 - осень 2023.
Снимок: https://ibb.co/R9Y8Xy8

3. Manjaro 22.0.0. (обновлена до 23.0.0.) XFCE 4.18.
Тестирование: май - июль 2023-го. Удалена.
Микрообзор: https://cloud.mail.ru/public/Uwop/aTJVCCGQJ
Снимок: https://ibb.co/DKtmNMD

4. Archcraft 2023.05. openbox; bspwm.
Тестирование.
openbox: с июля 2023-го;
bspwm: сентябрь 2023-го.
Микрообзор: https://cloud.mail.ru/public/7X25/fLSe978iN
Снимок: https://ibb.co/nrqysnt

5. Linux Mint Debian Edition 6 "Faye" Cinnamon.
С осени 2023-го вместо Mint 19.
Микрообзор: https://cloud.mail.ru/public/f6Dy/u3iwdLNNC
Снимок: https://ibb.co/tY3hGnr

6. Windows 10 22H2
Сильно мажорное параллельное обновление 2024-06-22.
Микрообзор: https://cloud.mail.ru/public/3JrZ/W4TShPXLX
Снимок: https://ibb.co/yVvRnT1

7. Linux Mint
22.1. "Xia" Cinnamon. 2025-02-10. Установил "на посмотреть" (внешний SSD SATA).

Note 1. Запись температуры в файл (Linux): https://habr.com/ru/articles/962576/
Просмотров: 102   Комментариев: 0   Перейти к комментариям

Логин
Пароль

Регистрация
Забыли пароль?


Трибуна сайта

Сон судьбы...

Присоединяйтесь 




Наш рупор

 
Эхо прошлых битв! ГОЛОСУЕМ!!!

https://www.neizvestniy-geniy.ru/cat/music/folk-rockk/2753014.html?obkt=1

Рупор будет свободен через:
5 мин. 3 сек.









© 2009 - 2026 www.neizvestniy-geniy.ru         Карта сайта

Яндекс.Метрика
Реклама на нашем сайте

Мы в соц. сетях —  ВКонтакте Одноклассники Livejournal

Разработка web-сайта — Веб-студия BondSoft