Как в powershell создать каталог

от admin

Работа с файлами и папками

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

Получение списка файлов и папок, содержащихся в папке

Извлечь все элементы непосредственно из папки можно при помощи командлета Get-ChildItem. Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse. (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:

Командлет Get-ChildItem позволяет отфильтровать элементы при помощи параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить при помощи командлета Where-Object.

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г., и размер которых не менее 1 мегабайта и не более 10 мегабайт:

Копирование файлов и папок

Копирование выполняется при помощи командлета Copy-Item. Следующая команда создает резервную копию C:\boot.bak для файла C:\boot.ini:

Если целевой файл уже существует, то попытка копирования завершается неудачей. Для того чтобы перезаписать существующий целевой файл, используйте параметр Force:

Эта команда работает даже если целевой файл помечен как файл только для чтения.

Так же выполняется и копирование папок. Эта команда рекурсивно копирует папку «C:\temp\test1» в новую папку «c:\temp\DeleteMe»:

Можно также скопировать избранные элементы. Следующая команда копирует все файлы .txt, содержащиеся в папке «c:\data», в папку «c:\temp\text»:

Для копирования элементов файловой системы можно использовать и другие средства. В Windows PowerShell по-прежнему работают команды XCOPY и ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject,. Например, можно воспользоваться COM-классом Scripting.FileSystem COM сервера сценариев Windows для создания резервной копии файла C:\boot.ini в файле C:\boot.bak:

Создание файлов и папок

Создание новых элементов осуществляется одинаковым образом всеми поставщиками Windows PowerShell. Если поставщик Windows PowerShell поддерживает более одного типа элементов (например, поставщик Windows PowerShell FileSystem различает каталоги и файлы), необходимо указать тип элемента.

Эта команда создает новую папку «C:\temp\New Folder»:

Эта команда создает новый пустой файл «C:\temp\New Folder\file.txt»:

Удаление всех файлов и папок, содержащихся в папке

Удалить вложенные элементы можно при помощи командлета Remove-Item, однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, при попытке удаления папки «C:\temp\DeleteMe», которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:

Отображение локальной папки в виде диска, доступного в Windows

Отобразить локальную папку можно при помощи команды subst. Следующая команда создает локальный диск P:, корневым каталогом которого является локальный каталог Program Files:

Как и в случае сетевых дисков, диски, отображенные в оболочке Windows PowerShell при помощи команды subst, немедленно становятся доступными оболочке Windows PowerShell.

Чтение текстового файла в массив

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет Get-Content используется для чтения всего файла за один шаг, как показано далее:

Командлет Get-Content сразу рассматривает данные, прочитанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле «C:\temp\domainMembers.txt» список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Можно использовать командлет Get-Content, чтобы извлечь содержимое файла и поместить его в переменную $Computers:

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

Create Directory Using Windows PowerShell

In Windows PowerShell, there are multiple ways to create file directories or folders that we can fully integrate into our scripts. This article will show how to create them using Windows PowerShell.

Please enable JavaScript

Using the [System.IO] Namespace to Create Directory in PowerShell

Using the Directory .NET Framework class from the system.io namespace is possible. To use the Directory class, use the CreateDirectory static method and supply a path to the new folder’s location.

This technique is shown here.

When the command above runs, it returns a DirectoryInfo class. However, we do not necessarily recommend this approach, but it is currently working and available.

Using the File System Object to Create Directory in PowerShell

Another way to create a directory is to use the Scripting.FileSystemObject object from Windows PowerShell.

This method is the same object that VBScript and other scripting languages used to work with the file system. It is swift and relatively easy to use.

After the object is created, Scripting.FileSystemObject exposes a CreateFolder method. The CreateFolder method accepts a string representing the path to create the folder.

After running, an object contains the path and other information about the newly-created directory.

Using the New-Item Cmdlet to Create Directory in PowerShell

The native Windows PowerShell commands are also available to create directories. One way is to use the New-Item cmdlet.

When used, the -Force switch parameter will overwrite existing folders that have been already created. Instead, we can use the Test-Path cmdlet to check if the directory exists.

In the example below, we can create a script block to check if the directory exists. If the directory exists, it will not create the directory.

This syntax is one way of avoiding the -Force switch parameter.

Suppose we compare this command’s output with the output from the previous .NET command. The result is the same because the New-Item cmdlet and the [System.IO.Directory]::CreateDirectory command return a DirectoryInfo object.

It is also possible to shorten the New-Item command by leaving out the -Path parameter name and only supplying the full path as a data type string with the ItemType syntax. This revised command is shown here.

Some might complain that it was easier to create a directory in the old-fashioned command interpreter, cmd, because all they needed to type was md –-and typing md is undoubtedly easier than typing New-Item command.

Using the md Legacy Command to Create Directory in PowerShell

The previous example leads to the fourth way to create a directory (folder) using Windows PowerShell, using the md function.

The advantage of using the md command is that it is faster since it already knows you will create a directory. Therefore, you can leave the ItemType parameter and type the full path directly.

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

Name already in use

PowerShell-Docs / reference / docs-conceptual / samples / Working-with-Files-and-Folders.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

5 contributors

Users who have contributed to this file

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Working with files and folders

Navigating through PowerShell drives and manipulating the items on them is similar to manipulating files and folders on Windows disk drives. This article discusses how to deal with specific file and folder manipulation tasks using PowerShell.

Listing all files and folders within a folder

You can get all items directly within a folder using Get-ChildItem . Add the optional Force parameter to display hidden or system items. For example, this command displays the direct contents of PowerShell Drive C: .

The command lists only the directly contained items, much like using the dir command in cmd.exe or ls in a UNIX shell. To show items in subfolder, you need to specify the Recurse parameter. The following command lists everything on the C: drive:

Get-ChildItem can filter items with its Path, Filter, Include, and Exclude parameters, but those are typically based only on name. You can perform complex filtering based on other properties of items using Where-Object .

The following command finds all executables within the Program Files folder that were last modified after October 1, 2005 and that are neither smaller than 1 megabyte nor larger than 10 megabytes:

Copying files and folders

Copying is done with Copy-Item . The following command backs up C:\boot.ini to C:\boot.bak :

If the destination file already exists, the copy attempt fails. To overwrite a pre-existing destination, use the Force parameter:

This command works even when the destination is read-only.

Folder copying works the same way. This command copies the folder C:\temp\test1 to the new folder C:\temp\DeleteMe recursively:

You can also copy a selection of items. The following command copies all .txt files contained anywhere in C:\data to C:\temp\text :

You can still use other tools to perform file system copies. XCOPY, ROBOCOPY, and COM objects, such as the Scripting.FileSystemObject, all work in PowerShell. For example, you can use the Windows Script Host Scripting.FileSystem COM class to back up C:\boot.ini to C:\boot.bak :

Creating files and folders

Creating new items works the same on all PowerShell providers. If a PowerShell provider has more than one type of item—for example, the FileSystem PowerShell provider distinguishes between directories and files—you need to specify the item type.

This command creates a new folder C:\temp\New Folder :

This command creates a new empty file C:\temp\New Folder\file.txt

[!IMPORTANT] When using the Force switch with the New-Item command to create a folder, and the folder already exists, it won’t overwrite or replace the folder. It will simply return the existing folder object. However, if you use New-Item -Force on a file that already exists, the file is overwritten.

Removing all files and folders within a folder

You can remove contained items using Remove-Item , but you will be prompted to confirm the removal if the item contains anything else. For example, if you attempt to delete the folder C:\temp\DeleteMe that contains other items, PowerShell prompts you for confirmation before deleting the folder:

If you don’t want to be prompted for each contained item, specify the Recurse parameter:

Mapping a local folder as a drive

You can also map a local folder, using the New-PSDrive command. The following command creates a local drive P: rooted in the local Program Files directory, visible only from the PowerShell session:

Just as with network drives, drives mapped within PowerShell are immediately visible to the PowerShell shell. To create a mapped drive visible from File Explorer, use the Persist parameter. However, only remote paths can be used with Persist.

Reading a text file into an array

One of the more common storage formats for text data is in a file with separate lines treated as distinct data elements. The Get-Content cmdlet can be used to read an entire file in one step, as shown here:

Get-Content treats the data read from the file as an array, with one element per line of file content. You can confirm this by checking the Length of the returned content:

Примеры скриптов PowerShell для системного администрирования

Чтобы определить путь к текущему каталогу, введите команду Get-Location.

Командлет Get-Location аналогичен команде pwd в оболочке BASH. Командлет Set-Location аналогичен команде cd в Cmd.exe.

Настройка текущего расположения (Set-Location)

Команда Get-Location используется с командой Set-Location. Команда Set-Location позволяет вам указать расположение текущего каталога.

Обратите внимание, что после ввода команды вы не получите прямого отклика о действии команды. Большинство команд Windows PowerShell, выполняющих действия, практически не создают выходных данных, так как выходные данные не всегда полезны. Чтобы проверить успешность внесения изменения в каталог при вводе команды Set-Location, укажите параметр -PassThru при вводе команды Set-Location.

Параметр -PassThru можно использовать с некоторыми командами Set в Windows PowerShell для возврата сведений о результате, когда отсутствуют выходные данные по умолчанию.

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

Например, если вы находитесь в папке C:\Windows, точка ( . ) представляет C:\Windows, а две точки ( .. ) представляют C: . Текущее расположение можно изменить на корень диска C: путем ввода следующей команды:

Тот же метод работает для дисков Windows PowerShell, которые не являются дисками файловой системы, например HKLM: . В реестре в качестве расположения можно задать раздел HKLM\Software путем ввода следующего кода:

После этого можно изменить расположение каталога на родительский каталог, который является корнем диска Windows PowerShell HKLM: с помощью относительного пути:

Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов Windows PowerShell для Set-Location (cd, chdir, sl). Пример:

Сохранение и отзыв последних расположений (Push-Location и Pop-Location)

При изменении расположения полезно отслеживать свое предыдущее расположение и иметь возможность вернуться к нему. Командлет Push-Location в Windows PowerShell создает упорядоченный журнал («стек») путей к каталогам, которые вы открывали, чтобы можно было вернуться по нему на шаг назад, используя дополнительный командлет Pop-Location.

Например, Windows PowerShell обычно запускается в корневом каталоге пользователя.

Чтобы передать текущее расположение в стек, а затем переместить его в папку локальных параметров, введите:

После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:

Чтобы убедиться, что каталоги изменены, введите команду Get-Location.

После этого можно перейти в последний открытый каталог, введя команду Pop-Location, и проверить изменение, введя команду Get-Location.

Как и в случае с командлетом Set-Location, можно включить параметр -PassThru при вводе командлета Pop-Location, чтобы открыть указанный каталог.

Кроме того, можно использовать командлеты расположения с сетевыми путями. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введя

или диспетчер конфигурации служб

Чтобы изменить расположение на любой доступный диск, можно использовать команды Push-Location и Set-Location. Например, если у вас есть локальный дисковод компакт-дисков с буквой диска D, содержащий компакт-диск с данными, вы можете изменить расположение на него, введя команду Set-Location D: .

Если дисковод пуст, вы получите следующее сообщение об ошибке:

Работа с файлами и папками. Получение списка файлов и папок, содержащихся в папке.

Извлечь все элементы непосредственно из папки можно с помощью командлета Get-ChildItem . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse . (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:

Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью Where-Object .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:

Копирование файлов и папок

Копирование выполняется с помощью командлета Copy-Item . Следующая команда создает резервную копию C:\boot.ini в C:\boot.bak:

Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.

Эта команда работает, даже если целевой объект доступен только для чтения.

Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.

Можно также скопировать избранные элементы. Следующая команда копирует все файлы TXT, содержащиеся в папке C:\data , в папку C:\temp\text :

Для копирования элементов файловой системы можно использовать и другие средства. В Windows PowerShell по-прежнему работают команды XCOPY, ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject. Например, можно воспользоваться COM-классом Scripting.FileSystem сервера сценариев Windows для создания резервной копии файла C:\boot.ini в файле C:\boot.bak :

Создание файлов и папок

Создание новых элементов осуществляется одинаковым образом всеми поставщиками Windows PowerShell. Если поставщик Windows PowerShell поддерживает более одного типа элементов (например, поставщик Windows PowerShell FileSystem различает каталоги и файлы), необходимо указать тип элемента.

Эта команда создает папку C:\temp\New Folder :

Эта команда создает пустой файл C:\temp\New Folder\file.txt .

При использовании параметра Force с командой New-Item для создания папки, которая уже существует, она не перезапишет и не заменит папку. Будет просто возвращен имеющийся объект папки. Однако, если использовать New-Item -Force в уже имеющимся файле, файл будет полностью перезаписан.

Удаление всех файлов и папок, содержащихся в папке

Удалить вложенные элементы можно с помощью командлета Remove-Item , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, при попытке удаления папки C:\temp\DeleteMe , которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:

Подключение локальной папки как диска

Отобразить локальную папку можно с помощью команды New-PSDrive . Следующая команда создает локальный диск P: , корневым каталогом которого является локальный каталог Program Files, отображающийся только в сеансе PowerShell:

Как и при использовании сетевых дисков, диски, отображенные в Windows PowerShell, немедленно становятся доступными оболочке Windows PowerShell. Чтобы создать подключенный диск, отображающийся в проводнике, нужен параметр -Persist . Но с этим параметром можно использовать только удаленные пути.

Чтение текстового файла в массив

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет Get-Content используется для чтения всего файла за один шаг, как показано далее:

Командлет Get-Content сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле C:\temp\domainMembers.txt список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Вы можете использовать командлет Get-Content , чтобы извлечь содержимое файла и поместить его в переменную $Computers :

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

Работа с файлами, папками и разделами реестра

Перечисление файлов, папок и разделов реестра (Get-ChildItem)

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

Если необходимо вернуть все файлы и папки, которые находятся непосредственно в папке C:\Windows, введите:

Списки выглядят аналогично тем спискам, которые появляются при вводе команды dir в Cmd.exe или команды ls в командной оболочке UNIX.

С помощью параметров командлета Get-ChildItem можно создавать очень сложные списки. Далее рассмотрим несколько сценариев. Синтаксис командлета Get-ChildItem можно увидеть, введя:

Эти параметры можно скомбинировать и сопоставить для получения настраиваемых выходных данных.

Перечисление всех элементов в контейнере (-Recurse)

Чтобы увидеть оба элемента в папке Windows и все элементы во вложенных папках, используйте параметр Recurse для Get-ChildItem. В списке отображается все, что находится в папке Windows, а также элементы в ее вложенных папках. Пример:

Фильтрация элементов по имени (-Name)

Чтобы отобразить только имена элементов, используйте параметр Name для Get-Childitem:

Принудительное перечисление скрытых элементов (-Force)

В выходных данных команды Get-ChildItem не отображаются элементы, которые обычно невидимы в проводнике или Cmd.exe. Чтобы показать скрытые элементы, используйте параметр Force для Get-ChildItem. Пример:

Этот параметр называется Force, так как позволяет принудительно переопределить обычное поведение команды Get-ChildItem. Параметр Force широко используется для принудительного выполнения действия командлетом. Тем не менее, он не будет выполнять действия, компрометирующие систему безопасности.

Сопоставление имен элементов с подстановочными знаками

Команда Get-ChildItem допускает подстановочные знаки в пути к перечисляемым элементам.

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

  • Звездочка (*) — соответствует нулю или большему количеству вхождений любого символа.
  • знак вопроса (?) — соответствует ровно одному символу;
  • Открывающая квадратная скобка ([) и закрывающая квадратная скобка (]) — заключают в себя набор символов для сопоставления.

Далее приводится несколько примеров работы спецификации из подстановочных знаков.

Чтобы найти в каталоге Windows все файлы, имеющие суффикс .log и ровно пять символов в основном имени, введите следующую команду:

Чтобы найти в каталоге Windows все файлы с именами, начинающимися на букву x, введите:

Чтобы найти все файлы с именами, начинающимися на x или z, введите:

Исключение элементов (-Exclude)

Вы можете исключить определенные элементы с помощью параметра Exclude для Get-ChildItem. Это позволит вам выполнить сложную фильтрацию в одном операторе.

Например, предположим, что вы пытаетесь найти библиотеку службы времени Windows в папке System32 и все, что вам известно об имени библиотеки, — то, что оно начинается на W и содержит «32».

Выражение w*32*.dll найдет все библиотеки DLL, удовлетворяющие условию, но может также вернуть библиотеки Windows 95 и библиотеки, совместимые с 16-разрядной версией Windows, в именах которых содержится «95» или «16». Файлы с такими числами в именах можно пропустить, используя параметр Exclude с шаблоном *[9516]* :

Смешение параметров Get-ChildItem

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

Результаты отсутствуют, даже если существуют две библиотеки, которые начинаются на букву z в папке Windows.

Результаты не возвращены, так как подстановочный знак указан как часть пути. Хотя команда и была рекурсивной, командлет Get-ChildItem ограничил элементы до тех, которые находятся в папке Windows с именами, заканчивающимися на .dll.

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

Работа с записями реестра. Создание списков записей реестра.

Существует несколько способов просмотра реестра. Самый простой — получить имена свойств, связанные с разделом. Например, чтобы просмотреть имена записей в разделе реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion , используйте Get-Item . Разделы реестра содержат свойство с универсальным именем Property, которое является списком записей реестра в разделе. Следующая команда выбирает свойство Property и расширяет элементы так, чтобы они отображались в списке:

Чтобы просмотреть записи реестра в более удобочитаемой форме, используйте Get-ItemProperty .

Все свойства Windows PowerShell раздела имеют префиксы PS, например PSPath, PSParentPath, PSChildName и PSProvider.

Для создания ссылки на текущее расположение можно использовать нотацию *.* . Set-Location можно использовать для изменения значения на контейнер реестра CurrentVersion.

Кроме того, можно использовать встроенный диск HKLM PSDrive с Set-Location .

Затем можно использовать нотацию *.* для текущего расположения, чтобы перечислить свойства без указания полного пути.

Расширение пути работает так же, как и в файловой системе, поэтому в этом расположении можно получить перечисление ItemProperty для HKLM:\SOFTWARE\Microsoft\Windows\Help с помощью Get-ItemProperty -Path ..\Help .

Получение одной записи реестра

Если необходимо получить конкретную запись в разделе реестра, можно использовать один из нескольких возможных подходов. Этот пример получает значение DevicePath в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion .

Вместе с Get-ItemProperty используйте параметр Path, чтобы указать имя раздела и параметр Name, а также имя записи DevicePath.

Эта команда возвращает стандартные свойства Windows PowerShell, а также свойство DevicePath.

Хотя Get-ItemProperty содержит параметры Filter, Include и Exclude, их нельзя использовать для фильтрации по имени свойства. Эти параметры относятся к разделам реестра (путям элементов), а не записям реестра. Записи реестра — это свойства элементов.

Другой вариант — использовать средство командной строки Reg.exe. Для получения справки по reg.exe введите reg.exe /? в командной строке. Чтобы найти запись DevicePath, используйте reg.exe, как показано в следующей команде:

Также можно использовать объект WshShell COM, чтобы найти некоторые записи реестра, хотя этот метод не работает с большими двоичными данными или именами записей реестра, содержащими такие символы, как \. Добавьте имя свойства с разделителем «\» в путь элемента:

Настройка одной записи реестра

Если необходимо изменить определенную запись в разделе реестра, можно использовать один из нескольких подходов. Этот пример изменяет запись Path в разделе HKEY_CURRENT_USER\Environment . Запись Path указывает расположение для поиска исполняемых файлов.

  1. Получите текущее значение записи Path с помощью Get-ItemProperty .
  2. Добавьте новое значение, отделив его с помощью ; .
  3. Используйте Set-ItemProperty с указанным разделом, именем записи и значением, чтобы изменить запись реестра.

Хотя Set-ItemProperty содержит параметры Filter, Include и Exclude, их нельзя использовать для фильтрации по имени свойства. Эти параметры относятся в разделам реестра (путям элементов), а не к записям реестра (свойствам элементов).

Другой вариант — использовать средство командной строки Reg.exe. Для получения справки по reg.exe введите reg.exe /? . в командной строке.

В следующем примере запись Path изменяется за счет удаления пути, добавленного в предыдущем примере. Get-ItemProperty по-прежнему используется для получения текущего значения, исключая анализ строки, возвращаемой reg query . Методы SubString и LastIndexOf используются для получения последнего добавленного пути в запись Path.

Создание новых записей реестра

Чтобы добавить новую запись реестра с именем PowerShellPath в раздел CurrentVersion, используйте New-ItemProperty с путем к разделу, именем записи и значением записи. В этом примере используется значение переменной Windows PowerShell $PSHome , в которой хранится путь к каталогу установки Windows PowerShell.

Вы можете добавить новую запись в раздел с помощью следующей команды, и команда также вернет сведения о новой записи:

Значение PropertyType должно быть именем элемента перечисления Microsoft.Win32.RegistryValueKind из следующей таблицы:

ТАБЛИЦА 1

Значение PropertyType Значение
Двоичные данные Двоичные данные
DWord Число, которое является допустимым UInt32
ExpandString Строка, которая может содержать динамически раскрывающиеся переменные среды
MultiString Многострочная строка
String Любое строковое значение
QWord 8 байтов двоичных данных

Запись реестра можно добавить в несколько расположений, указав массив значений для параметра Path:

Кроме того, можно перезаписать существующее значение записи реестра, добавив параметр Force в любую команду New-ItemProperty .

Переименование записей реестра

Чтобы переименовать запись PowerShellPath в PSHome, используйте Rename-ItemProperty .

Чтобы отобразить переименованное значение, добавьте параметр PassThru в команду.

Удаление записей реестра

Чтобы удалить записи реестра PSHome и PowerShellPath, используйте Remove-ItemProperty .

Читать:
Как посчитать среднее значение в sql

Похожие статьи