-- : --
Зарегистрировано — 131 509Зрителей: 73 425
Авторов: 58 084
On-line — 45 932Зрителей: 9271
Авторов: 36661
Загружено работ — 2 255 810
«Неизвестный Гений»
Блог пользователя LexD
Блоги / Блог пользователя LexD
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:\\′Program Files′\\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‑ChildItem, Get‑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 Перейти к комментариям
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:\\′Program Files′\\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‑ChildItem, Get‑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"
— обратная косая черта
\\
экранируется с помощью ещё одной обратной косой черты.
Для ввода пароля из сценария 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 Перейти к комментариям
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
1. Windows 7 Home Basic
Первая ОС.
Снимок:
2. Linux Mint 19.1. Cinnamon 4.
Весна 2019 - осень 2023.
Снимок:
3. Manjaro 22.0.0. (обновлена до 23.0.0.) XFCE 4.18.
Тестирование: май - июль 2023-го. Удалена.
Микрообзор:
Снимок:
4. Archcraft 2023.05. openbox; bspwm.
Тестирование.
openbox: с июля 2023-го;
bspwm: сентябрь 2023-го.
Микрообзор:
Снимок:
5. Linux Mint Debian Edition 6 "Faye" Cinnamon.
С осени 2023-го вместо Mint 19.
Микрообзор:
Снимок:
6. Windows 10 22H2
Сильно мажорное параллельное обновление 2024-06-22.
Микрообзор:
Снимок:
7. Linux Mint
22.1. "Xia" Cinnamon. 2025-02-10. Установил "на посмотреть" (внешний SSD SATA).
Note 1. Запись температуры в файл (Linux):
Просмотров: 102 Комментариев: 0 Перейти к комментариям
Первая ОС.
Снимок:
2. Linux Mint 19.1. Cinnamon 4.
Весна 2019 - осень 2023.
Снимок:
3. Manjaro 22.0.0. (обновлена до 23.0.0.) XFCE 4.18.
Тестирование: май - июль 2023-го. Удалена.
Микрообзор:
Снимок:
4. Archcraft 2023.05. openbox; bspwm.
Тестирование.
openbox: с июля 2023-го;
bspwm: сентябрь 2023-го.
Микрообзор:
Снимок:
5. Linux Mint Debian Edition 6 "Faye" Cinnamon.
С осени 2023-го вместо Mint 19.
Микрообзор:
Снимок:
6. Windows 10 22H2
Сильно мажорное параллельное обновление 2024-06-22.
Микрообзор:
Снимок:
7. Linux Mint
22.1. "Xia" Cinnamon. 2025-02-10. Установил "на посмотреть" (внешний SSD SATA).
Note 1. Запись температуры в файл (Linux):
Трибуна сайта
Наш рупор





