PowerShell – командная оболочка Виндовс, позволяющая выполнять и автоматизировать большинство задач по администрированию операционных систем. В её состав входит собственный скриптовый язык, оболочка командной строки и платформа управления конфигурацией. Она широко применяется опытными пользователями, разработчиками, сисадминами, DevOps-инженерами, системными инженерами, администраторами баз данных. По ссылке внизу можете скачать PowerShell для Windows 7, 8, 10, 11.
Выберите версию
PowerShell-7.3.6-win-x64.msi
PowerShell-7.3.6-win-x86.msi
- Возможности программы
- Как установить ПО
- Системные требования
- Чем отличается от CMD
- Как пользоваться PowerShell
- Основы программирования для работы с PowerShell
- Основные команды
- Инструкции
- Программа не работает
- Обрезка строчки
- Вернуть команду «Открыть окно»
- Обработка ошибок
- Управление схемами питания
- Удалённое управление
- Переменные среды
- Сравнение величин
- Удаление по условию
- Определяем переменную
- Настройка интерфейса
- Превращение типов данных
- Форматирование вывода
- Как вывести кавычки
Возможности программы
PowerShell (ПоверШелл, ПоверШел) – кроссплатформенное решение, которое также присутствует в Linux и MacOS. Когда разговор заходит об этом инструменте, он касается трёх вещей:
- Оболочка командной строки – оболочка в которой реализованы возможности популярных аналогов. В отличие от них она возвращает не только текст, но и объекты .NET. Её возможности:
- журнал командной строки;
- постановка команд;
- заполнение посредством Tab – автоматическая подстановка команд;
- работа с псевдонимами команд;
- объединение команд путём создания конвейера;
- справочная система в консоли.
- Скриптовый язык – применяется для автоматизации управления Windows, тестирования, развёртывания проектов. Возможности языка сценариев:
- расширяемость функциональности с применением скриптов, функций;
- удобная система вывода информации;
- создание динамических типов посредством расширяемой системы;
- экспорт информации в форматы Excel: XML, CSV.
- Платформа автоматизации – экосистема модулей для администрирования и настройки практически любой технологии, включая облачные сервисы, виртуальные машины.
PowerShell поддерживает все команды CMD, которые здесь являются псевдонимами, пользователь может создавать собственные инструкции.
В PS реализовано управление комбинациями клавиш, часть из которых вам знакомы. Основные горячие клавиши описаны здесь. Приложение поддерживает различные кодировки, в том числе кириллицу (русский язык).
Выберите версию
PowerShell-7.3.6-win-x64.msi
PowerShell-7.3.6-win-x86.msi
Как установить ПО
Для инсталляции PowerShell скачайте подходящую версию приложения и запустите полученный файл.
Системные требования
PowerShell работает на компьютерах с Windows 7 – 11 и Server 2008 – 2022 с установленным Windows Management Framework v5.1.
Выберите версию
PowerShell-7.3.6-win-x64.msi
PowerShell-7.3.6-win-x86.msi
Чем отличается от CMD
Рассмотрим основные отличия между PS и CMD.
PowerShell имеет визуальные и функциональны отличия от CMD. У PS красивый графический интерфейс, он мощнее командной строки, при этом включает в себя все её возможности – выполняет любые команды CMD. Команды PS называются командлетами, причём выход одного из них может являться входом в другой, ведь командлеты представлены объектами с определённой структурой.
PowerShell поддерживает удаленное выполнение команд, работает со сложными скриптами, обрабатывает команды объектно-ориентированного языка программирования, а CMD – последовательности символов.
Как пользоваться PowerShell
Для запуска PowerShell воспользуйтесь поисковой строкой или меню WinX, которое вызывается правым кликом по пуску или комбинацией клавиш Win + X. Если нужно вызвать инструмент от имени администратора, кликните по ярлыку правой клавишей и выберите соответствующую команду.
Для отображения перечня используемых команд введите командлет:
Get-Command
Любую команду можно вставить из буфера правой клавишей.
В итоге увидите таблицу с четырьмя столбцами: тип команды, её название, версия, источник. При этом название обычно представлено парой глагол – существительное, что облегчает работу с инструментом, особенно его освоение начинающими пользователями или системными администраторами.
В PowerShell различают следующие виды команд:
- функции – написанные на PS, в основном используются для выполнения задач;
- командлеты – встроенные команды от Майкрософт, применяются преимущественно разработчиками;
- псевдонимы – из CMD;
- внешние сценарии – подключатся из файлов.
Многие команды имеют параметры, задающие их поведение: Get – получение, Set – установка, Remove – удаление, очистка. Всё интуитивно и понятно.
Для сокращения списка команд выполните Get-Command с параметром -Verb Get:
Get-Command -Verb Get
Если он всё равно покажется длинным, попробуйте:
Get-Command -Noun Content
Для обновления документации выполните:
Update-Help
Теперь можете ознакомиться со справочными материалами:
Get-Help
Если хотите узнать подробности определённой команды, выполните строку с её названием, например:
Get-Help Add-Content
Для отображения примеров её применения задайте соответствующий параметр:
Get-Help Add-Content –Examples
Кроме сведений об отдельных командах в PS есть раздел About с основными данными о конкретных командах, например, касающихся ядра инструмента:
Get-Help about_Core_Commands
Основы программирования для работы с PowerShell
Без знаний базовых понятий программирования вы сможете выполнять только простейшие действия в PS. Для продвинутой работы с оболочкой вам нужны следующие понятия.
Переменная.
Переменная – место хранения значений, за определённым символом или их набором можно хранить изменяющиеся наборы данных. Вызываются они путём ввода имени переменной со значком $ перед ней, например, встроенная переменная
$MaximumHistoryCount
отобразит число команд, хранимых PS в истории.
Для изменения значения воспользуйтесь выражением типа:
$MaximumHistoryCount = 100
Типы данных.
В переменных хранится различная информация:
- $variable = ‘text’ – строковая, берётся в кавычки;
- $variable = 12 – числовая (цифры) – бывают целочисленными, с плавающей запятой;
- $variable = $true (либо false) – логическая.
При этом над переменными можно совершать различные действия.
Объекты.
Каждый элемент в PS – объект, экземпляр шаблона, называемый классом. Последний определяет:
- содержимое объекта, методы или действия, которые над ним можно выполнять;
- атрибуты объекта – всю полноту информации о нём.
Структура данных.
Способ их хранения, организации. Структуры данных в PS – объекты, которые хранятся в переменных. К ним относят двумерные массивы, хэш-таблицы, ArrayList.
Циклы.
PowerShell работает с пятью типами циклов – структурами, предназначенными для многократного выполнения инструкций.
- Foreach – выполняет одинаковые действия над объектами списка до его завершения.
- For – запускает код указанное количество раз.
- While – выполняет команды, пока выполняется заданное условие.
- Do/while, do/until – схожие с Первый выполняет что-то, пока условие истинно, второй – пока оно таким не станет.
При определённых условиях можно создать бесконечный цикл – будет исполняться, пока его не прервут вручную.
Условные операторы.
Позволяют реализовывать выполнение кода в зависимости от заданных условий.
- If – задаёт условие осуществления операции: if (условие) {действие}.
- Else – позволяет предоставить альтернативу if – действие, которое следует выполнить, когда условие не соблюдается.
- Switch – позволяет запускать разные фрагменты кода в зависимости от заданных значений.
Текст, следующий за символом «#» или начинающаяся из него строка будут комментарием. Если нужно закомментировать несколько строк, разместите их между символами <# #>. Аналогично делается многострочный комментарий:
<# ваш текст
продолжение#>.
Основные команды
PowerShell позволяет производить в среде Windows практически любые действия: работать с файловой системой, создавать базы данных, SQL-запросы, устанавливать SSH-подключения, осуществлять вывод данных на экран или в файл, запуск exe, работать с файловой системой. Рассмотрим основные действия, которые можно осуществлять в PowerShell, с пояснениями и примерами, ознакомимся с синтаксисом PS.
Архивирование файлов и каталогов в Windows 10 осуществляется командой Compress-Archive:
$compress = @{
Path = “d:\tor.torrent”
CompressionLevel = “Fastest”
DestinationPath = “D:\tor.zip”
}
Compress-Archive @compress
Path – путь к файлу / каталогу, DestinationPath – название архива.
Кроме вывода значений в консоль (на экран) PowerShell позволяет осуществить вывод в файл. Для этого используется простейшая конструкция с указанием переменной и пути к файлу. Ранее мы задали значение $color равным «red». Чтобы вывести переменную в файл, выполните:
$color > c:\text.txt
Выключить компьютер можно командой Stop-Computer – работа завершается спустя 5 секунд. Если нужно установить таймер, используйте аргумент delay:
Stop-Computer -delay 20
Перезагрузить компьютер через PowerShell можно командой:
Restart-Computer.
PowerShell используют как генератор паролей. Для создания паролей из 10 символов с 2 спецсимволами используйте код:
Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(10, 2)
Также его можно модифицировать:
Add-Type -AssemblyName System.Web$NumberOfCharacters = 8 # Число символов$NumberOfSpecialCharacters=2 # Мин. число спецсимволов$NumberOfPasswords=1 # Число паролей1..$NumberOfPasswords| % {[System.Web.Security.Membership]::GeneratePassword($NumberOfCharacters,$NumberOfSpecialCharacters)}
Добавить пользователя в группу:
Add-AdGroupMember -Identity TestADGroup -Members user
Выгрузить пользователей из группы:
Remove-ADGroupMember -Identity TestADGroup -Members user#1, user#2
Работа с массивами.
Создать массив – значит, присвоить переменной несколько значений: $b = 5, 12, 77, 54, 23, 43, 3.
Добавить элемент в массив:
$b = @(0..6)
$b += 12
Чтение массива – $b.
У строк есть свойства: длина и символ. Для задания их значений используйте выражение:
$string = ‘текст’
Если вам нужна длина строки, выполните $string.Length.
Для обращения к конкретному символу используйте $string.Chars(3) – цифра – номер элемента.
Вывести список процессов – Get-Process.
Завершить процесс:
Stop-Process -Name “ProcessName” -Force
Мы завершили работу службы названием AIMP – проигрывателя.
Вывод заданий из планировщика: Get-Command -Module ScheduledTasks, их запуск из планировщика – Start-ScheduledTask CheckServiceState_PS.
Экспорт заданий в XML:
Export-ScheduledTask “StartupScript_PS” | out-file c:\zadaniya.xml
Изменить пароль пользователя:
- Import-module ActiveDirectory – импорт модуля управления паролями в сессию;
- Set-ADAccountPassword USER1 -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “POWERPAROL” -Force -Verbose) –PassThru – смена пароля на POWERPAROL для юзера USER
Вывести имя компьютера (не учётной записи, а именно машины) – $env:computername.
Через PowerShell моно вывести информацию о компьютере: краткую справку, подробные сведения или только нужное значение при помощи разных команд и командлетов:
- wmic /? – общие данные;
- wmic /?:BRIEF – краткая сводка;
- wmic /?:FULL – полная информация.
Также доступны следующие команды:
- Get-WmiObject -Class win32_processor – ЦП;
- Get-WmiObject -Class win32_baseboard – материнская плата;
- Get-WmiObject Win32_PhysicalMemory – объём физической памяти;
- Get-PhysicalDisk – дисковые накопители;
- Get-WmiObject Win32_NetworkAdapter – сетевой адаптер.
- Win32_NetworkAdapterConfiguration – конфигурация сетевой платы;
- WMIC CPU Get DeviceID,NumberOfCores,NumberOfLogicalProcessors – число физических ядер процессора.
Открыть окно Проводника в указанном каталоге:
Invoke-Expression “explorer ‘/select,E:\Mycatalog'”
PowerShell ведет историю команд, которую можете просмотреть, выполнив Get-History. Для поиска по ней используйте Ctrl + R.
Просмотреть журнал событий – Get-EventLog -LogName “Windows PowerShell”.
Копирование файлов:
Copy-Item -Path “c:\zadanclsiya.xml” -Destination “D:\temp\zadanclsiya.xml”
Обратите внимание на двойные кавычки, первый адрес – исходный файл, второй – место его назначения.
Округление чисел. Команда [math]::Round(123.578, 1) – отобразится 123.6. Обратите внимание, что дробные числа следует задавать с точкой, а не через запятую.
Чтобы объединить несколько команд в одной строке, используйте символ &:
Get-Service -Name explorer & Stop-Service
Если вторая команда должна запускаться после успешного выполнения первой – два таких символа – &&:
Get-Service -Name explorer && Stop-Service
Проводник будет завершен только при его обнаружении, в ином случае вторая инструкция не выполняется.
Вывести историю выполненных команд с подробностями:
Get-History | Format-List -Property *
Просмотреть её в блокноте:
notepad (Get-PSReadLineOption | select -ExpandProperty HistorySavePath)
Очистить историю – Clear-History
Удалить одну команду, последнюю:
Clear-History -count 1 –newest
Также можете удалить файл с историей:
Remove-Item (Get-PSReadlineOption).HistorySavePath
Запустить скрипт или приложение с параметрами, укажите их после имени через пробел с чёрточкой:
E:\Downloads\MicrosoftEdgeSetup.exe –silent
Для создания собственной переменной введите её название, а через знак «равно» – значение:
$color = ‘red’
Чтобы вывести значение переменной, выполните:
$color
Встроенные переменные изменять не рекомендуется.
Инструмент поддерживает объединение или конкатенацию строк при помощи знака плюс:
$name = ‘Красный на английском будет ‘ + $color
Перенос или перевод строки на новую выполняется символом `n`:
“Эта строка будет разделена на две `n` прямо в этом месте.”
Перезапустить службу – используйте командлет:
Restart-Service -Name themes
Для получения названий сервисов введите: Get-Service
Через PS можно создать, скопировать, удалить и переименовать файл.
Переименование:
Rename-Item -Path “c:\text.txt” -NewName “new_name.txt”
Путь к файлу берите в двойные кавычки.
Перейти в каталог / папку: Set-Location -Path D:\Games.
Получить текущее расположение: Get-Location.
Просмотреть содержимое каталога: DIR.
Получить список сетевых дисков: Get-PSDrive.
Подключить сетевой диск:
New-SmbMapping -LocalPath ‘F:’ -RemotePath ‘\\192.168.3.120\Catalog -Persistent $true
Проверка существования файла:
Test-Path -Path ‘C:\ProgramFiles\’
Название объекта берут в одинарные кавычки.
Поиск cтроки или текста в документе:
Select-String -Path c:\text.txt -Pattern “ТЕКСТ”
Проверить версию PowerShell: $PSVersionTable.
Поиск файла или вывод содержимого каталога:
Get-ChildItem -Path “D:\temp” –Recurse
или
Get-ChildItem -Path “D:\temp” – без рекурсии, только в указанной папке, без подкаталогов.
Проверить доступность порта TCP:
Test-NetConnection -Port 25
Узнать размер папки:
Get-ChildItem d:\тел | Measure-Object -Property Length -sum
Путь без кавычек.
Вывести размер файла:
Get-ChildItem -Path ‘d:\tor.zip’ | fl *
Информация находится в строке Length в байтах.
Для преобразования используйте строку:
Get-ChildItem -Path ‘d:\tor.zip’ | fl @{Label=”SizeMB”; Expression={$_.Length / 1MB}}, *
Узнать расширение файла в PowerShell можно командлетом:
Get-ChildItem ‘d:\’ -File | Get-Member -MemberType Property
Для вывода информации используйте выражение:
Get-ChildItem ‘C:\Folder2\*’ -Recurse | fl -Property Extension
Проверить свободное место на дисках:
Get-WmiObject -Class Win32_LogicalDisk
Синхронизация времени. Сначала проверьте состояние сервиса W32Time
Get-Service -Name W32Time | Format-Wide -Property Status -Column 1
Если он Stopped, запустите – выполните Start-Service W32Time.
Включите синхронизацию времени:
w32tm /resync /force
Через PowerShell можно создать пользователя в Windows (локального):
New-ADUser User1
Вывести список пользователей:
Get-ADUser -filter *
Создать папку с подкаталогами:
New-Item -Path ‘D:\Catalog1\Catalog2’ -ItemType Directory
New-Item D:\temp\file.txt
Создать ярлык сложнее:
# На что ярлык
$source = ‘C:\Program Files\Adobe\Photoshop\Photoshop.exe’
# Место его хранения с расширением .lnk
$target = ‘C:\Users\User\Desktop\link.lnk’
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($target)
$Shortcut.TargetPath = $source
$Shortcut.Save()
Сформировать список файлов в папке:
Get-ChildItem -Path D:\ -Force
Узнать срок действия пароля:
net user polzovatel /domain
Вывести текущую дату: Get-Date
С помощью параметров можно изменить формат даты.
Узнать температуру процессора:
get-wmiobject msacpi_thermalzonetemperature -namespace “root/wmi”.
Значение строки Current Temperature разделите на 10 и отнимите от него 273, ведь оно указано в Кельвинах.
Удаление папки:
Remove-Item D:\temp\catalog
Подтвердите выполнение операции клавишей «Y».
Удалить папку с содержимым принудительно:
Remove-Item -Recurse -Force D:\temp\catalog.
Удалить файл:
Remove-Item D:\Temp\name.jpg
Подтверждение не требуется.
Удаление файлов по маске, например, картинок:
Remove-Item D:\Temp\*.jpg
Узнать IP:
Get-NetIPAddress | Format-Table
Узнать версию Windows:
Get-WmiObject -Class Win32_OperatingSystem | fl -Property Version, BuildNumber
Чтение из файла – вывод содержимого txt –документа на дисплей:
Get-Content -Path ‘e:\Downloads\62404808.txt’
Если в скрипте нужно сделать паузу, используйте конструкцию:
Wait-Event -Timeout 10
Посмотреть свойства объекта:
Get-ChildItem c:\zadaniya.xml | Get-Member
Инструкции
Разберёмся с основными проблемами, которые возникают с PowerShell, а также приведём основные инструкции по работе с командной строкой.
Программа не работает
Если администратор запретил использование PowerShell, появляется сообщение «Выполнение сценариев отключено в этой системе», его необходимо включить через редактор групповых политик (для Home версии не подходит) или редактор реестра.
- Зажмите Win + R, введите regedit, кликните «ОК».
- Перейдите в раздел HKLM\SOFTWARE\Policies\Microsoft\Windows.
- Через правый клик создайте новый раздел PowerShell.
- В нём – два строковых параметра: EnableScripts со значением 1 и ExecutionPolicy – Unrestricted.
Перезагрузите компьютер.
Вторая причина, почему не работает PowerShell – не очищена политика, позволяющая управлять приложениями Win32. Для устранения проблемы перезагрузите ПК, причём может потребоваться несколько перезапусков.
Также иногда помогает чистая загрузка системы:
- Отключите все сторонние службы кроме сервисов Microsoft в окне msconfig.
- Перезапуск с очисткой кэша – жмите по кнопке «Перезагрузить» с зажатой клавишей Shift.
Если PowerShell грузит процессор, отыщите какой процесс он запускает через Process Explorer или Диспетчер задач. Сам PS не может потреблять много ресурсов, но если через него запускаются приложения или, например, майнеры, тогда да. Также рекомендуем проверить компьютер на вирусы.
Обрезка строчки
При помощи метода Remove вы можете обрезать строку, удалять из неё символы.
Создайте переменную строкового типа и присвойте ей значение:
$perem = “The main scientific question of our time”
В скобках укажите, после какого символа нужно обрезать строку:
$perem.Remove(12)
В итоге получите: «The main sci» – только 12 символов с учётом пробелов.
Метод Split разбивает строку на массив при помощи разделителя.
Его указывают следующим образом:
$perem.Split(“u”)
Строка будет разбиваться после каждого символа «u».
Посредством метода Substring получите подстроку, созданную из исходной строчки:
$perem.Substring(7,5)
Первая цифра – номер начального символа, вторая – их количество.
Вернуть команду «Открыть окно»
В Windows 10 1703 исчез пункт «Открыть окно команд». Вернуть его просто.
- Выполните regedit в окне Win + R.
- Разверните HKEY_CLASSES_ROOT\Directory\shell\cmd.
- При дальнейших манипуляциях во время работы с реестром может появиться уведомление: «Нет доступа», поэтому вызовите «Разрешения» из контекстного меню каталога cmd.
- Жмите «Дополнительно», затем – «Изменить».
- Введите название учётной записи, кликните «Проверить имена», затем – «ОК».
- Замените владельца подконтейнеров с учётом дочерних элементов
- Администраторам разрешите полный доступ.
- Теперь удалите запись HideBasedOnVelocityId.
Повторите операции для разделов HKСR\Drive\shell\cmd и HKCR\Directory\Background shell\cmd.
Обработка ошибок
В PS есть средства обработки ошибок, например, программа умеет пропускать их – не выводить на экран, при этом записывая в переменную $ERROR. Для этого используйте конструкцию
-ErrorAction SilentlyContinue или -EA 0
Например,
Get-Service service,spoooler -EA 0
PowerShell на найдёт службы spoooler (правильно spooler), но ошибку не выдаст.
Управление схемами питания
Для активации плана электропитания «Максимальная производительность» через PS используйте командлет
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
Удалённое управление
Установим подключения к удаленному компьютеру.
Сначала поменяйте сеть на частную.
Enable-PSRemoting –SkipNetworkProfileCheck
Откройте порт 5985 для удалённого ПК:
Set-NetFirewallRule -DisplayName “Windows Remote Management (HTTP-In)” -RemoteAddress 192.168.1.120
Enable-NetFirewallRule -DisplayName “Windows Remote Management (HTTP-In)
Протестируйте соединение:
Test-NetConnection 192.168.1.120 -Port 5985
Test-WsMan 192.168.1.120
Активируйте аутентификацию
Get-ChildItem -Path WSMan:\localhost\Service\Auth\
Подтвердите запуск службы клавишей Y.
Переменные среды
PowerShell поддерживает переменные окружения: системные и созданные другими приложениями. Он позволяет добавлять, удалять, изменять их. Они хранятся в виде строки, никогда не бывают пустыми.
Для отображения значения переменной используйте командлет $Env:windir. В данном случае увидите значение windir.
Для создания новой переменной среды введите:
$Env:novaya = ‘D:\temp’
После двоеточия идёт её название, после знака «равно» – значение в кавычках.
Сравнение величин
Для вывода даты используйте команделет: Get-Date.
Если нужно выполнить сравнение дат:
Get-ChildItem -Path “.\Downloads\” | where -Property CreationTime -GT (Get-Date).AddDays(-14)
В первых кавычках путь к каталогу. CreationTime – свойство объекта, время его создания. AddDays(-15) – поиск значений больше двух недель – 14 дней.
Удаление по условию
Удалить файлы старше n дней из каталога d:\temp. Вместо «-n» укажите возраст объектов в днях.
[IO.Directory]::GetFiles(“d:\temp”).Where{$_.LastWriteTime -lt [datetime]::Now.AddDays(-n)}.Foreach{[io.file]::Delete($_)}
Определяем переменную
Узнать тип переменной можно методом GetType.
Сначала создайте переменную, например, строковую.
$perem = ‘strokovaya’
$perem.GetType().FullName
Настройка интерфейса
Вы можете изменить тип, размер, цвет текста, оттенок фоновой заливки PowerShell и прочие настройки интерфейса.
Кликните правой клавишей по заголовку окна, выберите «Свойства», во вкладке «Цвет» меняйте окраску заднего плана и символов, уровень прозрачности окна.
Превращение типов данных
Если нужно превратить число в строку, используйте следующую конструкцию
$b = ‘500’ # задаём переменной текстовое значение (цифры в кавычках)
$b.GetType().FullName # проверяем его тип: System.String значит строковый
$a = [int]$b # конвертируем строку в integer – целое число
$a.GetType().FullName #проверяем его тип – получаем Int32.
Форматирование вывода
Для удобства восприятия информации PowerShell позволяет отображать данные в разных форматах.
Командлет Format-Wide выводит свойства объектов в столбцах.
Get-Command -Verb Format | Format-Wide
Без свойств вид информации изменится – исчезнет слово «Format»:
Get-Command -Verb Format | Format-Wide -Property Noun
Для вывода в три колонки модифицируйте запись:
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Для вывода в табличном виде с автоматическим выбором ширины столбца
Get-Service -Name win* | Format-Table -AutoSize
С усечением данных по правому краю:
Get-Service -Name win* | Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Как вывести кавычки
Экранирование кавычек – несложная задача для PS. Заключённые в одинарные кавычки строчки PowerShell понимает дословно. Для Вывода кавычек используйте двойные, например:
$a = “строка с кавычками ‘a'”