Примеры powershell: Пример кода Windows PowerShell — PowerShell
Содержание
Пример кода Windows PowerShell — PowerShell
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
-
Windows PowerShell ® примеры доступны в Windows SDK. в этом разделе содержится пример кода, который содержится в примерах Windows SDK.
Примечание
при установке Windows SDK создается каталог samples , в котором доступны все образцы Windows PowerShell. типичный каталог установки — C:\Program Files\Microsoft sdks \ Windows \v6.0. запустите Windows PowerShell и введите «cd самплес\сисмгмт\повершелл» , чтобы перейти к каталогу Windows PowerShell samples. в этом документе каталог примеров Windows PowerShell называется <PowerShell Samples> .
Пример листинга кода
Пример кода | Описание |
---|---|
Пример кода AccessDbProviderSample01 | это поставщик, описанный в статье создание базового поставщика Windows PowerShell. |
Пример кода AccessDbProviderSample02 | это поставщик, описанный в разделе создание поставщика Windows PowerShellного накопителя. |
Пример кода AccessDbProviderSample03 | это поставщик, описанный в разделе создание поставщика Windows PowerShell элемента.![]() |
Пример кода AccessDbProviderSample04 | это поставщик, описанный в разделе создание поставщика контейнера Windows PowerShell. |
Пример кода AccessDbProviderSample05 | это поставщик, описанный в разделе создание поставщика навигации Windows PowerShell. |
Пример кода AccessDbProviderSample06 | это поставщик, описанный в разделе создание поставщика содержимого Windows PowerShell. |
Примеры кода GetProc01 | Это базовый Get-Process Пример командлета, описанный в разделе Создание первого командлета. |
Примеры кода GetProc02 | Это Get-Process Пример командлета, описанный в разделе Добавление параметров, которые обрабатывают Command-Line входе. |
Примеры кода GetProc03 | Это Get-Process Пример командлета, описанный в разделе Добавление параметров, обрабатывающих входные данные конвейера. |
Примеры кода GetProc04 | Это Get-Process Пример командлета, описанный в статье Добавление незавершенных отчетов об ошибках в командлет.![]() |
Примеры кода GetProc05 | Этот Get-Process командлет аналогичен командлету, описанному в статье Добавление незавершенных отчетов об ошибках в командлет. |
Примеры кода StopProc01 | Это Stop-Process Пример командлета, описанный в разделе Создание командлета, изменяющего систему. |
Примеры кода StopProcessSample04 | Это Stop-Process Пример командлета, описанный в разделе Добавление наборов параметров в командлет. |
Примеры кода Runspace01 | Ниже приведены примеры кода для пространства выполнения, описанного в разделе Создание консольного приложения, выполняющего указанную команду. |
Примеры кода Runspace02 | В этом примере используется класс System. Management. Automation. рунспацеинвоке для Get-Process синхронного выполнения командлета. |
Примеры кода RunSpace03 | Ниже приведены примеры кода для пространства выполнения, описанного в разделе «Создание консольного приложения, запускающего указанный скрипт».![]() |
Примеры кода RunSpace04 | Это пример кода для пространства выполнения, в котором используется класс System. Management. Automation. рунспацеинвоке для выполнения скрипта, который создает завершающую ошибку. |
Примеры кода RunSpace05 | |
Примеры кода RunSpace06 | |
Примеры кода RunSpace07 | |
Примеры кода RunSpace08 | |
Примеры кода RunSpace09 | |
Примеры кода RunSpace10 | Это исходный код для образца Runspace10, который добавляет командлет в System. Management. Automation. пространства. рунспацеконфигуратион , а затем использует измененные сведения о конфигурации для создания пространства выполнения. |
См. также:
Руководство программиста по Windows PowerShell
Пакет SDK для Windows PowerShell
Обратная связь
Просмотреть все отзывы по странице
PowerShell Скрипты — примеры автоматизации
В этой записи буду складировать свои (и не только свои) небольшие PowerShell скрипты, которые не настолько велики, чтоб им посвящать отдельную запись.
Скрипты будут достаточно полезны в качестве примеров для создания скриптов со схожим функционалом.
Windows Powershell — оснастка командной строки и скриптовый язык для различной автоматизации задач и администрирования в windows. Официальный сайт — microsoft.com/powershell
Содержание
Удаление всех бекапов кроме трех последних
На сервере локально сохраняются бекапы, где папки именуются таким образом: «klbackup2014-01-22#23-00-00». PowerShell скрипт переносит эти папки на сетевой диск и хранить не более 3-х последних бекапов.
Copy-Item "C:\backups\klbackup*\" "\\Server\Backups\klBackup\" -force -recurse -ErrorAction stop Remove-Item "C:\backups\klbackup*" -force -recurse $folders = Get-ChildItem "\\Server\Backups\klBackup\klbackup*" $i = 0 While ($i -lt $folders.count-3) { Remove-Item $folders[$i] -force -recurse $i++ }
Удаляем файлы старше трех месяцев
$date = (Get-Date).AddMonths(-3) Get-ChildItem -Path D:\Files\Common | where {!$_.PSIsContainer} | foreach { if ($_.LastWriteTime -lt $date) { # в тестовых целях указываем -whatif # когда убедимся что все корректно работает то убираем его Remove-Item $_ -whatif } }
Разрешение скачанного изображения
PowerShell скрипт скачивает изображение из Интернета и отображает ее разрешение
Function Get-Image{ begin{[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") |Out-Null} process{ $fi=[System.IO.FileInfo]$_ if( $fi.Exists){ $img = [System.Drawing.Image]::FromFile($_) $img.Clone() $img.Dispose() }else{Write-Host "File not found: $_" -fore yellow } } end{} } #Скачиваем файл $webclient = New-Object System.Net.WebClient $url = "http://cs418720.userapi.com/v418720852/20d0/DiSlb-_mVBg.jpg" $file = "D:\ImageSize.jpg" $webclient.DownloadFile($url,$file) #Получаем ширину и высоту изображения $image = $file | Get-Image $Width = $image.Width $Height = $image.Height #Вывод на экран write-output “Width:$Width, Height:$Height"
Среднее арифметическое трех последних чисел
Из файла, в котором содержаться в каждой строке по числу, нужно получить три последние числа и выдать их среднее арифметическое.
$date = Get-Date -format yyyy-MM-dd $filename = "C:\Program Files\Zabbix\CheckHost_INET-" + $date + ".res" $file = Get-Content $filename #считываем файл в переменную. В файле каждая строка содержит по числу. $lenght = $file.count #получаем количество строк файла $avg=([int]$file[$lenght-1]+[int]$file[$lenght-2]+[int]$file[$lenght-3])/3 #вычисляем арифметическое среднее трех последних чисел Write-Host([int]$avg) #выводим среднее арифметическое с откидыванием дроби
Количество файлов в папках и размер папок
PowerShell скрипт выводит на экран и в файл D:\CountFiles.csv информацию о том, сколько содержит файлов каждая папка и подпапки в директории D:\Photos, а также размер этих папок и подпапок. csv файл можно импортировать в exel или гугл-таблицы и отсортировать столбцы по возрастанию или спаданию. Скрипт может пригодиться при оптимизации файлового хранилища.
$source="D:\Photos" Get-ChildItem $source -recurse -force | where {$_.psIscontainer} | foreach { $count = Get-ChildItem $_.fullname -recurse | where {$_.length} | Measure-Object -property length -Sum Write-Host($_.FullName) $FilesSize = '{0:F}' -f ((($count.Sum)/1024)/1024) Write-Host("Files: " + $count.count ) Write-Host("Size: " + $FilesSize + " MB") '"' + $_.FullName + '","' + $count.count + '","' + $FilesSize + '"' | Out-File D:\CountFiles.csv -Append }
Случайный афоризм из файла
#Автор скрипта: https://elims.org.ua #читаем содержимое файла в масив построчно и берем случайную строку $file = Get-Content "C:\aphorism.txt" $aphorism = Get-Random -input $file #берем случайный афоризм из массива афоризмов $tag = Get-Random -input " #афоризмы"," #цитаты", " #цитаты" #берем случайный тег $aphorism = $aphorism + $tag Write-Host($aphorism)
Отображение mp3-файлов с низким битрейтом
PowerShell скрипт выводит список mp3-файлов, которые находятся в папке D:\vk-music\ и имеют битрейт мене 320
#скрипт выводит список mp3-файлов, которые находятся в папке D:\vk-music\ и имеют битрейт мене 320 $objShell = New-Object -ComObject Shell.Application $mp3files = Get-ChildItem "D:\vk-music\" -include "*.mp3" -recurse #получили список mp3-файлов foreach($mp3Item in $mp3files){ #для каждого файла из списка $file = split-path $mp3Item -leaf #из полного имени вырезали имя файла $path = split-path $mp3Item #из полного имени вырезали адрес папки $objFolder = $objShell.namespace($path) $objFile = $objFolder.parsename($file) if ($objFolder.getDetailsOf($objFile, 28)) { # 28 - номер свойства файла, в котором хранится информация о битрейте $bitrate = [int]$objFolder.getDetailsOf($objFile, 28).Substring(1,3) #из строки, где хранится битрейт, вырезаем числовое значение битрейта if ($bitrate -lt 320) { #если битрейт меньше 320 "№" + ++$i + ' bitrate: ' + $bitrate + " file: " + [string]$mp3Item #выводим битрейт и полное имя файла } } }
Удаление изображений с плохим качеством
Удаляем в указанных папках (рекурсивно) изображения jpg с худшим качеством чем HD Ready
Function Get-Image{ begin{[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") |Out-Null} process{ $fi=[System.IO.FileInfo]$_ if( $fi.Exists){ $img = [System.Drawing.Image]::FromFile($_) $img.Clone() $img.Dispose() }else{Write-Host "File not found: $_" -fore yellow } } end{} } $paths = @() $paths = $paths + "D:\Folder1\" $paths = $paths + "E:\Folder2" $paths = $paths + "X:\Folder3\" Foreach ($path in $paths) { Get-ChildItem -Path $path -recurse -filter *.jpg | where {!$_.PSIsContainer} | foreach { #Получаем ширину и высоту изображения $image = $_.FullName | Get-Image $Width = $image.Width $Height = $image.Height #Вывод на экран $pixels = $Width*$Height $hd_ready = 1280*720 $string = $_.FullName+' Width:'+$Width+' Height:'+$Height + " Pixels:"+$pixels $image.dispose() if ($pixels -le $hd_ready) { Remove-Item $_.FullName write-host $string } } }
Копирование бекапов на резервную площадку
Если PowerShell скрипт запущен в определенное время и определенный день, то он начинает копировать файлы из указанных папок. Ход процесса записывается в лог файл.
После окончания работы:
- присылается письмо в котором указано:
- свободное место на локальных дисках (до старта и после окончания), объем бекапа
- время старта и окончания, длительность бекапа
- средняя скорость копирования
- компьютер выключается
Компьютер выключается потому, что он в основном выключен. Для резервного копирования он автоматически включается (настройка в биосе).
$StartTimeHour = (Get-Date).Hour #Запоминаем когда запустилась задача $Day_of_week = [int]((Get-Date).DayofWeek) #текущий день недели if ((($Day_of_week -eq 2)-or($Day_of_week -eq 4)-or($Day_of_week -eq 6))-and($StartTimeHour -eq 11)) { #старт копирования если сейчас вторник, среда, суббота и при этом 11 часов $StartTime = Get-Date -Format "yyyy.MM.dd HH:mm:ss" #время старта копирования $Free_Space_Start = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='D:'" | ForEach-Object {[math]::truncate($_.freespace / 1GB)} #свободное место до бекапа $Free_Space_Start_Bytes = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='D:'" | ForEach-Object {$_.freespace} #свободное место до бекапа $log_file = "D:\Backups\log.txt" #лог файл скрипта, можно понять на каком этапе работа скрипта $date = "{0:yyyy-MM-dd}" -f (get-date) #текущая дата для имени папки $path = "D:\Backups\" + $date + "\" #имя папки if (-not(Test-Path $path)) { #если папка не существует write-host "создаем папку: " + $path $result = New-Item -ItemType directory -Path $path #создаем папку } #копируем резервные копии медка $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = $time + " Start Copy \\172.16.13.1\Backups\Medoc" "##################################################" | Out-File -Append $log_file -Encoding UTF8 $string | Out-File -Append $log_file -Encoding UTF8 & robocopy \\172.16.13.1\Backups\Medoc D:\Backups\Medoc /e /log:"D:\Backups\robocopy_log.txt" #копируем резервные копии разных устройств и ПО $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = $time + " Start Copy \\172.16.13.1\Backups\Other" $string | Out-File -Append $log_file -Encoding UTF8 & robocopy \\172.
16.13.1\Backups\Other D:\Backups\Other /e /log:"D:\Backups\robocopy_log.txt" #копируем резервные копии Windows с 1-го сервера $path = $path + "WindowsImageBackup" $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = $time + " Start Copy \\172.16.13.1\Backups\WindowsImageBackup" $string | Out-File -Append $log_file -Encoding UTF8 & robocopy \\172.16.13.1\Backups\WindowsImageBackup $path /e /log:"D:\Backups\robocopy_log.txt" #копируем резервные копии Windows с 2-го сервера $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = $time + " Start Copy \\172.16.13.2\Backups\WindowsImageBackup" $string | Out-File -Append $log_file -Encoding UTF8 & robocopy \\172.16.13.2\Backups\WindowsImageBackup $path /e /log:"D:\Backups\robocopy_log.txt" #запись в лог-файл окончания работы $time = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date) $string = $time + " Finish Backup" $string | Out-File -Append $log_file -Encoding UTF8 "##################################################" | Out-File -Append $log_file -Encoding UTF8 #Формируем данные для письма $EndTime = Get-Date -Format "yyyy.
MM.dd HH:mm:ss" $Free_Space_End = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='D:'" | ForEach-Object {[math]::truncate($_.freespace / 1GB)} #свободное место после бекапа $Free_Space_End_Bytes = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='D:'" | ForEach-Object {$_.freespace} #свободное место до бекапа $backup_Size = $Free_Space_Start-$Free_Space_End $backup_Size_Bytes = $Free_Space_Start_Bytes-$Free_Space_End_Bytes $Work_time = $(NEW-TIMESPAN –Start $StartTime –End $EndTime) $Work_time_seconds = $Work_time.TotalSeconds $NetworkSpeed = '{0:N1}' -f ((($backup_Size_Bytes / $Work_time_seconds) / (1024*1024)) * 8) $Mail_String = "Свободное место до бекапа: " + $Free_Space_Start + " ГБ | `r`n" $Mail_String = $Mail_String + "Свободное место после бекапа:" + $Free_Space_End + " ГБ | `r`n" $Mail_String = $Mail_String + "Размер бекапа: " + $backup_Size + " ГБ | `r`n" $Mail_String = $Mail_String + "Старт бекапа: " + $StartTime + " | `r`n" $Mail_String = $Mail_String + "Конец бекапа: " + $EndTime + " | `r`n" $Mail_String = $Mail_String + "Время выполнения: " + $Work_time + " | `r`n" $Mail_String = $Mail_String + "Средняя скорость копирования: " + $NetworkSpeed + " Мбит в секунду `r`n" Write-host $Mail_String #Заголовки письма и данные почтового ящика $From = "admin-notify@домен.
com.ua" $To = "admin@домен.ком.ua" $SMTPServer = "адрес.сервера.com.ua" $SMTPPort = "25" $Username = "admin-notify@домен.ком.ua" $Password = "тут_пароль" $subject = "Copy Backups to ReserveServer" $body = $Mail_String #формируем сообщение в формате html: $message = New-Object System.Net.Mail.MailMessage $From, $To $message.Subject = $subject $message.IsBodyHTML = $true $message.Body = $body #Отправляем: Write-host "Отправляем письмо" $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort) $smtp.EnableSSL = $true $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password) $smtp.Send($message) Write-host "Письмо отправленно" & shutdown -s -t 300 #выключаем компьютер через 5 минут }
Информация об обновлениях WSUS
Этот Powershell скрипт получает информацию со WSUS и показывает:
- количество обновлений по заданных критериям
- краткую сводную информацию об обновлениях
- имена обновлений
- отображает список обновлений по заданным критериям для каждого компьютера по отдельности
$WSUSServer = 'SERVER_NAME' #WSUS-сервер $PortNumber = 8530 #http порт wsus [void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($WSUSServer,$False,$PortNumber) $UpdateScope = New-Object Microsoft.UpdateServices.Administration.UpdateScope #$UpdateScope.ApprovedStates = 'NotApproved' #указываем критерии апдейтов: не одобренные #$UpdateScope.IncludedInstallationStates = 'NotInstalled' #указываем критерии апдейтов: не проинсталированные $UpdateScope.IncludedInstallationStates = 'Installed' #указываем критерии апдейтов: проинсталированные $UpdateScope #просматриваем сформированные критерии апдейтов $wsus.GetUpdateCount($updatescope) #получаем и выводим количество апдейтов $wsus.GetUpdateStatus($updatescope,$False) #получаем и выводим краткую информацию об обновлениях $wsus.GetUpdates($updatescope).Title #выводим имена апдейтов $computers = $wsus.GetComputerTargets() #все компьютеры со wsus ForEach ($computer in $computers){ #для каждого компьютера $Computername = $computer.
fulldomainname #получаем его имя $updates = $computer.GetUpdateInstallationInfoPerUpdate($updateScope) #получаем апдейты по указаным критериям $UpdateCount = $updates.Count #количество апдейтов для текущего компьютера write-host $Computername $UpdateCount #выводим имя компьютера и количество апдейтов $i = 0 ForEach ($update in $updates) { #для каждого апдейта выводим подробную информацию $i++ $update_info = $update.GetUpdate() #запрашиваем инфо об апдейте $UpdateTitle = $update_info.Title #имя апдейта $IsApproved = $update_info.IsApproved #является ли он одобренным write-host $Computername $i "of" $UpdateCount $IsApproved $UpdateTitle } }
Лочим экран и произносим текст
Задача: если в заббиксе сработал тригер и он не потвержден, то необходимо лочить экран и произность этот тригер.
Тригеры из заббикса запрашиваются утилитой zabbixctl и выводяться в текстовый файл, который опубликован по веб-адресу.
Сам powershell скрипт:
Add-Type -AssemblyName System.speech $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer $request = (New-Object System.Net.WebClient).DownloadString("http://server/status.txt") #получаем тригеры $speak.Rate = -2 #Замедляем скорость произношения $zabbix_message = ($request -split '\n')[0] #первая строка - первый тригер if ($zabbix_message.length -ge 1) { #если строка не пустая cmd /c rundll32.exe user32.dll,LockWorkStation #лочим экран $speak.Speak("zabbix. " + $zabbix_message) #произносим текст $Time = Get-Date -Format "yyyy.MM.dd HH:mm:ss" $log_message = $Time + " " + $zabbix_message $log_message | Out-File -Append "c:\WINDOWS\scripts\log.txt" -Encoding UTF8 #записываем в лог-файл }
Вывод размера какой-либо веб страницы
$web = New-Object System.Net.WebClient "{0} bytes" -f ($web.DownloadString("https://elims.org.ua/")).length.toString("###,###,##0")
Остальные Powershell-скрипты:
- Powershell скрипты для Вконтакте
- Powershell скрипт: Автоответчик болтун для Вконтакте
- Powershell скрипт: Антиспам в коментариях стены и фотоальбомах сообщества во Вконтакте
- Powershell скрипт: Чтение Вконтакте через RSS
- Powershell скрипт: скачиваем фотографии из Вконтакте
- Powershell скрипт для скачивания музыки из Вконтакте
- Powershell скрипт: Отправка писем через gmail
- Powershell скрипт: охрана с помощью вебкамеры
- PowerShell скрипт автопубликации изображений на блог
Понравилось? =) Поделись с друзьями:
Опубликовано в рубрике Программирование
Метки: develop, PowerShell
« VBS: автоматическая архивация логов
Игра Flappy Bird: описание и как играть онлайн »
Примеры сценариев для системного администрирования — PowerShell
Редактировать
Твиттер
Фейсбук
Электронная почта
Работа с объектами
Практическое руководство
- Просмотр структуры объекта
- Выделение частей объектов
- Удаление объектов из пайплайна
- Сортировка объектов
- Создание .
NET и COM-объектов
- Использование статических классов и методов
- Получение объектов WMI с помощью Get-CimInstance
- Прямое управление элементами
Управление компьютерами
Практическое руководство
- Изменение состояния компьютера
- Сбор информации о компьютерах
- Создание запросов Get-WinEvent с помощью FilterHashtable
Управление процессами и услугами
Практическое руководство
- Управление процессами с помощью командлетов процесса
- Управление услугами
- Работа с принтерами
- Выполнение сетевых задач
- Работа с установками программного обеспечения
- Декодировать команду PowerShell из запущенного процесса
Работа с выводом
Концепция
- Перенаправление вывода
- Использование команд форматирования для изменения вида вывода
Управление дисками и файлами
Практическое руководство
- Управление текущим местоположением
- Управление дисками PowerShell
- Работа с файлами и папками
- Работа с папками файлов и ключами реестра
- Работа с записями реестра
- Работа с ключами реестра
Создание элементов пользовательского интерфейса
Практическое руководство
- Создание пользовательского поля ввода
- Создание графического средства выбора даты
- Несколько списков выбора
- Выбор элементов из списка
Управление дисками PowerShell — PowerShell
- Статья
Этот пример применим только к платформам Windows.
Диск PowerShell — это место хранения данных, к которому вы можете получить доступ как к диску файловой системы в
PowerShell. Поставщики PowerShell создают для вас некоторые диски, например файл
системные диски (включая C:
и D:
), диски реестра ( HKCU:
и HKLM:
) и
диск сертификата ( Cert:
), и вы можете создавать свои собственные диски PowerShell. Эти диски
полезны, но доступны только в PowerShell. Вы не можете получить к ним доступ с помощью других Windows
инструменты, такие как File Explorer или Cmd.exe
.
PowerShell использует существительное PSDrive для команд, которые работают с PowerShell.
диски. Чтобы получить список дисков PowerShell в сеансе PowerShell, используйте
Командлет Get-PSDrive
.
Получить-PSDrive
Корень поставщика имен CurrentLocation ---- -------- ---- --------------- Файловая система A:\ Псевдоним Псевдоним C FileSystem C:\ ...и настройки\me сертификат Сертификат \ D Файловая система D:\ Окружающая среда Функция Функция Реестр HKCU HKEY_CURRENT_USER Реестр HKLM HKEY_LOCAL_MACHINE переменная переменная
Хотя диски на дисплее различаются в зависимости от дисков в вашей системе, список выглядит примерно так:
вывод команды Get-PSDrive
, показанный выше.
Диски файловой системы
являются подмножеством дисков PowerShell. Вы можете идентифицировать диски файловой системы по
запись FileSystem в столбце Provider. Диски файловой системы в PowerShell поддерживаются
поставщик файловой системы PowerShell.
Чтобы просмотреть синтаксис командлета Get-PSDrive
, введите Команда Get-Command
с синтаксисом
параметр:
Get-Command -Name Get-PSDrive -Syntax
Get-PSDrive [[-Name]] [-Scope ] [-PSProvider ] [-V erbose] [-Debug] [-ErrorAction ] [-ErrorVariable ] [- OutVariable ] [-OutBuffer ]
Параметр PSProvider позволяет отображать только те диски PowerShell, которые поддерживаются
конкретного провайдера. Например, чтобы отобразить только те диски PowerShell, которые поддерживаются
Поставщик файловой системы PowerShell, введите Команда Get-PSDrive
с параметром PSProvider и
значение FileSystem :
Get-PSDrive -PSProvider FileSystem
Корень поставщика имен CurrentLocation ---- -------- ---- --------------- Файловая система A:\ C FileSystem C:\ ...nd Settings\PowerUser D Файловая система D:\
Чтобы просмотреть диски PowerShell, представляющие кусты реестра, используйте кнопку Параметр PSProvider для
отображать только те диски PowerShell, которые поддерживаются поставщиком реестра PowerShell:
Get-PSDrive -PSProvider Registry
Корень поставщика имен CurrentLocation ---- -------- ---- --------------- Реестр HKCU HKEY_CURRENT_USER Реестр HKLM HKEY_LOCAL_MACHINE
Вы также можете использовать стандартные командлеты Location с дисками PowerShell:
Set-Location HKLM:\SOFTWARE Нажмите-местоположение .\Microsoft Получить-местоположение
Путь ---- HKLM:\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Майкрософт
Добавление новых дисков PowerShell
Вы можете добавить свои собственные диски PowerShell с помощью команды New-PSDrive
. Чтобы получить синтаксис для
Команда New-PSDrive
, введите команду Get-Command
с параметром Syntax :
Get-Command -Name New-PSDrive -Syntax
New-[-Description] [-Scope ] [-Credential ] [-Verbose] [-Debug ] [-ErrorAction ] [-ErrorVariable ] [-OutVariable ] [-OutBuffer ] [-WhatIf] [-Confirm]
Чтобы создать новый диск PowerShell, необходимо указать три параметра:
- Имя диска (можно использовать любое допустимое имя PowerShell)
- PSProvider — используйте
FileSystem
для местоположений файловой системы иRegistry
для местоположений реестра - Корень, то есть путь к корню нового диска
Например, можно создать диск с именем Office
, сопоставленный с папкой, содержащей
Приложения Microsoft Office на вашем компьютере, такие как C:\Program Files\MicrosoftOffice\OFFICE11
.
Чтобы создать диск, введите следующую команду:
New-PSDrive -Name Office -PSProvider FileSystem -Root "C:\Program Files\Microsoft Office\OFFICE11"
Корень поставщика имен CurrentLocation ---- -------- ---- --------------- Файловая система Office C:\Program Files\Microsoft Offic...
Примечание
Как правило, пути не чувствительны к регистру.
Доступ к диску PowerShell осуществляется по его имени, за которым следует двоеточие ( :
).
Диск PowerShell может значительно упростить многие задачи. Например, некоторые из наиболее важных ключей в
реестр Windows имеет чрезвычайно длинные пути, что делает доступ к ним громоздким и трудным для
помнить. Критическая информация о конфигурации находится в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
. Для просмотра и изменения элементов в
В разделе реестра CurrentVersion вы можете создать диск PowerShell с корнем в этом разделе, набрав:
New-PSDrive -Name cvkey -Реестр PSProvider -Root HKLM\Software\Microsoft\Windows\CurrentVersion
Корень поставщика имен CurrentLocation ---- -------- ---- --------------- ключ реестра HKLM\Software\Microsoft\Windows\...
Затем вы можете изменить местоположение на диск cvkey: , как и на любой другой диск:
cd cvkey:
или:
Set-Location cvkey: -PassThru
Путь ---- cvkey:\
Командлет New-PSDrive
добавляет новый диск только в текущий сеанс PowerShell. Если вы закроете
PowerShell, новый диск потерян. Чтобы сохранить диск PowerShell, используйте командлет Export-Console
.
для экспорта текущего сеанса PowerShell, а затем используйте PowerShell.exe
PSConsoleFile
параметр, чтобы импортировать его. Или добавьте новый диск в свой профиль Windows PowerShell.
Удаление дисков PowerShell
Вы можете удалить диски из PowerShell с помощью командлета Remove-PSDrive
. Например, если вы добавили
диск Office:
PowerShell, как показано в разделе New-PSDrive
, его можно удалить, введя:
Remove-PSDrive -Name Office
Чтобы удалить диск cvkey:
PowerShell, используйте следующую команду:
Remove-PSDrive -Name cvkey
Однако вы не можете удалить его, пока находитесь в накопителе.