Динамические параметры
Динамические параметры — это параметры командлета, которые добавляются поставщиком PowerShell и доступны только при использовании командлета на диске с поддержкой поставщика.
Введите <Майкрософт. Win32.RegistryValueKind>
Задает или изменяет тип данных значения реестра. Значение по умолчанию — (REG_SZ).
Этот параметр функционирует соответствующим образом для командлета Set-ItemProperty. Этот параметр также доступен для использования с командлетом Set-Item на дисках реестра, но он не оказывает никакого влияния.
Значение | Описание |
---|---|
Определяет строку, заканчивающуюся символом NULL. Используется для REG_SZ значений. | |
Указывает строку, завершающуюся значением NULL, которая содержит unexpanded. | |
ссылки на переменные среды, которые развертываются при развертывании | |
извлекается значение . Используется для REG_EXPAND_SZ значений. | |
Определяет двоичные данные в любой форме. Используется для REG_BINARY значений. | |
Определяет 32-разрядное двоичное число. Используется для REG_DWORD значений. | |
Указывает массив строк, заканчивающихся пустым значением. | |
два символа NULL. Используется для REG_MULTI_SZ значений. | |
Задает 64-разрядное двоичное число. Используется для REG_QWORD значений. | |
Указывает неподдерживаемый тип данных реестра, например | |
REG_RESOURCE_LIST значений. |
Параметры
-Credential
Примечание
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell.
Чтобы олицетворить другого пользователя или повысить уровень учетных данных при выполнении этого командлета, используйте Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Указывает в качестве массива строк элемент или элементы, которые этот командлет исключает в операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например . Можно использовать подстановочные знаки. Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например , где подстановочный знак указывает содержимое каталога.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Указывает фильтр для указания параметра Path . Поставщик FileSystem — это единственный установленный поставщик PowerShell, который поддерживает фильтры. Фильтры более эффективны, чем другие параметры. Поставщик применяет фильтр, когда командлет получает объекты, а не powerShell фильтрует объекты после их извлечения. Строка фильтра передается в API .NET для перечисления файлов. API поддерживает только подстановочные знаки и .
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Указывает, что этот командлет получает элементы, к которым невозможно получить доступ, например скрытые элементы.
Применение этого параметра зависит от конкретного поставщика. Дополнительные сведения см. в разделе about_Providers. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Указывает в качестве массива строк элемент или элементы, которые этот командлет включает в операцию. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например . Можно использовать подстановочные знаки. Параметр Include действует только в том случае, если команда включает содержимое элемента, например , где подстановочный знак указывает содержимое каталога.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Указывает путь к одному или нескольким расположениям. Значение LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки позволяют PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Дополнительные сведения см. в разделе about_Quoting_Rules.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Определяет путь к элементу. Этот командлет получает элемент в указанном расположении. Можно использовать подстановочные знаки. Этот параметр является обязательным, но имя параметра Path является необязательным.
Используйте точку (), чтобы указать текущее расположение. Используйте подстановочный знак (), чтобы указать все элементы в текущем расположении.
Type: | String |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Stream
Примечание
Этот параметр доступен только в Windows.
Возвращает указанный альтернативный поток данных из файла. Введите имя потока. Поддерживаются подстановочные знаки. Чтобы получить все потоки, используйте звездочку ()
Этот параметр допустим для каталогов, но обратите внимание, что каталоги по умолчанию не имеют потоков данных
Этот параметр появился в PowerShell 3.0. Начиная с Версии PowerShell 7.2, можно получать альтернативные потоки данных из каталогов и файлов.
Type: | String |
Position: | Named |
Default value: | No alternate file streams |
Accept pipeline input: | False |
Accept wildcard characters: | True |
Удаление приложений
Удаление пакета установщика Windows с помощью PowerShell работает примерно так же, как и установка пакета. Ниже приведен пример, в который выбирается удаляемый пакет на основе его имени. В некоторых случаях проще выполнить фильтрацию с помощью параметра IdentifyingNumber:
Удалить другие приложения не так просто, даже если это делается локально. Строки удаления командной строки для этих приложений можно найти путем извлечения свойства UninstallString.
Этот способ работает для приложений установщика Windows и более старых программ, отображающихся в разделе «Удаление»:
Выходные данные при необходимости можно отфильтровать по отображаемому имени:
Возможно, что эти строки нельзя будет напрямую использовать из командной строки PowerShell без внесения некоторых изменений.
Установка приложений
Вы можете использовать класс Win32_Product для удаленной или локальной установки пакетов установщика Windows.
Примечание
Чтобы установить приложение, запустите PowerShell, используя параметр «Запуск от имени администратора».
При удаленной установке используйте UNC-сетевой путь, чтобы указать путь к пакету .msi, так как подсистема WMI не понимает пути PowerShell. Например, чтобы установить пакет NewPackage.msi, расположенный в сетевой папке на удаленном компьютере PC01, введите следующую команду в командной строке PowerShell:
Приложения, которые не используют технологию установщика Windows, могут использовать специальные методы для автоматического развертывания. Изучите документацию по приложению или обратитесь в службу поддержки поставщика приложения.
Сохранение и отзыв последних расположений (push-location и pop-location)
При изменении расположения полезно отслеживать, где вы были, и иметь возможность вернуться в предыдущее расположение. Командлет в PowerShell создает упорядоченный журнал («стек») путей к каталогам, где вы были, и вы можете вернуться к журналу путей к каталогам с помощью командлета .
Например, PowerShell обычно запускается в домашнем каталоге пользователя.
Примечание
Слово стек имеет специальное значение во многих параметрах программирования, включая .NET Framework.
Например, в физическом стеке элементов последний элемент, помещенный в стек, является первым элементом, который можно извлечь из него. Добавление элемента в стек в разговорной речи называется «проталкиванием» элемента в стек. Извлечение элемента из стека в разговорной речи называется «выводом» элемента из стека.
Чтобы передать текущее расположение в стек, а затем переместить его в папку локальных параметров, введите:
После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:
Чтобы убедиться, что каталоги изменены, введите команду :
После этого можно перейти в последний открытый каталог, введя команду , и проверить изменение, введя команду :
Как и в случае с командлетом , вы можете включить параметр PassThru при вводе командлета , чтобы открыть указанный каталог:
Кроме того, можно использовать командлеты расположения с сетевыми путями. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введя
или
Для изменения расположения на любой доступный диск можно использовать команды и . Например, если у вас есть локальный дисковод компакт-дисков с буквой диска D, содержащий компакт-диск с данными, вы можете изменить расположение на дисковод компакт-дисков, введя команду .
Если диск пуст, появляется следующее сообщение об ошибке:
Примеры
Пример 4. Получение элементов на указанном диске
В этом примере возвращаются элементы на диске. Подстановочный знак () представляет все элементы в контейнере, а не только контейнер.
В PowerShell используйте одну звездочку () для получения содержимого вместо традиционного . Формат интерпретируется буквально, поэтому не будет извлекать каталоги или имена файлов без точки.
Пример 6. Отображение содержимого раздела реестра
В этом примере показано содержимое Майкрософт. Раздел реестра PowerShell. Этот командлет можно использовать с поставщиком реестра PowerShell для получения разделов и подразделов реестра, но для получения значений и данных реестра необходимо использовать командлет .
Пример 8. Получение сведений о жесткой ссылке
В PowerShell 6.2 было добавлено альтернативное представление для получения сведений о жесткой ссылке. Чтобы получить сведения о жесткой ссылке, передайте выходные данные в
Свойство идентифицирует жесткую ссылку с помощью в
Пример 9. Выходные данные для операционных систем, отличных от Windows
В PowerShell 7.1 в системах Unix командлет предоставляет выходные данные, подобные Unix:
Новые свойства, которые теперь являются частью выходных данных:
- UnixMode — это разрешения файла, представленные в системе Unix.
- Пользователь является владельцем файла
- Группа является владельцем группы
- Size — это размер файла или каталога, представленный в системе Unix.
Примечание
Эта функция была перенесена из экспериментальной в основную версию PowerShell 7.1.
Перечисление всех удаляемых приложений
Так как большинство стандартных приложений регистрируют программу удаления в Windows, с ними можно работать локально, в реестре Windows. Не существует гарантированного способа найти все приложения в системе. Однако можно найти все программы со списками, отображаемыми в разделе Установка и удаление программ , в следующем разделе реестра:
.
В этом разделе можно найти приложения. Чтобы упростить просмотр раздела Uninstall, можно сопоставить диск PowerShell с таким путем реестра:
Теперь у нас есть диск с именем , который можно использовать для быстрого и удобного поиска установок приложений. Количество установленных приложений можно найти, подсчитав количество разделов реестра на диске PowerShell:
Мы можем искать в этом списке приложений, используя различные методы, начиная с . Чтобы получить список приложений и сохранить их в переменную , используйте следующую команду:
Чтобы отобразить значения записей реестра в подразделах реестра раздела «Удаление», используйте метод GetValue. Значение метода является записью реестра.
Например, чтобы найти отображаемые имена приложений в разделе «Удаление», используйте следующую команду:
Примечание
Нет никакой гарантии, что значения DisplayName уникальны.
Примеры
Пример 1. Установка свойства файла
Эта команда задает для свойства IsReadOnly файла final.doc значение true.
Он использует Path для указания файла, Name — имя, чтобы указать имя свойства, и параметр Value , чтобы указать новое значение.
Файл является объектом System.IO.FileInfo , а IsReadOnly — лишь одним из его свойств.
Чтобы просмотреть все свойства, введите .
Автоматическая переменная представляет значение TRUE. Дополнительные сведения см. в статье about_Automatic_Variables.
Пример 2. Создание записи и значения реестра
В этом примере показано, как с помощью создать новую запись реестра и присвоить ей значение. Он создает запись NoOfEmployees в ключе ContosoCompany и задает для нее значение 823.
Так как записи реестра считаются свойствами разделов реестра, которые являются элементами, вы используете для создания записей реестра, а также для установки и изменения их значений.
Первая команда создает запись реестра.
Он использует path для указания пути к диску и ключу .
Команда использует Имя , чтобы указать имя записи, и Значение для указания значения.
Вторая команда использует командлет для просмотра новой записи реестра.
При использовании командлетов или записи не отображаются, так как они являются свойствами ключа, а не элементами или дочерними элементами.
Третья команда изменяет значение записи NoOfEmployees на 824.
Можно также использовать командлет , чтобы создать запись реестра и ее значение, а затем использовать для изменения значения.
Для получения дополнительных сведений о диске введите .
Для получения дополнительных сведений об использовании PowerShell для управления реестром введите .
Пример 3. Изменение элемента с помощью конвейера
В этом примере используется для получения файла. Файловый объект передается по конвейеру в . Команда использует параметры Name и Value для указания свойства и его нового значения.
Перечисление приложений установщика Windows
Чтобы получить список приложений, установленных с помощью установщика Windows в локальной или удаленной системе, используйте следующий запрос WMI:
Чтобы отобразить все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например со значением (все).
Можно также использовать параметр Filter, чтобы выбрать только среду выполнения Microsoft .NET 2.0. Для значения параметра Filter используется синтаксис языка запросов WMI (WQL), а не синтаксис Windows PowerShell. Пример:
Чтобы получить список только интересующих вас свойств, используйте параметр Property командлетов форматирования.
Параметры
-Credential
Примечание
Этот параметр не поддерживается поставщиками, установленными с помощью PowerShell. Для олицетворения другого пользователя или повышения учетных данных при выполнении этого командлета используйте invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Указывает элементы, которые этот командлет пропускает. Значение этого параметра определяет параметр Path. Введите путь к элементу или шаблон, например. «*.txt». Можно использовать подстановочные знаки.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Задает фильтр в формате или языке поставщика. Значение этого параметра определяет параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их при извлечении объектов вместо того, чтобы фильтровать объекты после их получения.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
Указывает пути, которые тестирует этот командлет. Значение этого параметра определяет параметр Path. Введите путь к элементу или шаблон, например. «*.txt». Можно использовать подстановочные знаки.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
Указывает, что этот командлет проверяет синтаксис пути независимо от того, существуют ли элементы пути. Этот командлет возвращает значение, если синтаксис пути является допустимым и если он не является.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Указывает проверяемый путь. В отличие от параметра Path, значение параметра LiteralPath используется в точности так, как вводится. Никакие символы не распознаются как подстановочные знаки. Если путь содержит символы, которые могут интерпретироваться PowerShell как escape-последовательности, необходимо заключить путь в одинарный кавычки, чтобы они не интерпретировались.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
Укажите время в качестве объекта DateTime .
Type: | Nullable<T>DateTime |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Укажите время в качестве объекта DateTime .
Type: | Nullable<T>DateTime |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Указывает проверяемый путь. Можно использовать подстановочные знаки. Если путь содержит пробелы, заключите его в одинарные кавычки.
Type: | String |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PathType
Указывает тип конечного элемента в пути. Этот командлет возвращает значение , если элемент имеет указанный тип и если он отсутствует. Допустимые значения для этого параметра:
- Контейнер.
элемент, содержащий другие элементы, например каталог или раздел реестра. - Лист.
элемент, который не содержит другие элементы, например файл. - Любой.
или контейнер, или конечный элемент.
Определяет, имеет ли конечный элемент пути определенный тип.
Внимание!
До PowerShell версии 6.1.2, когда параметры IsValid и PathType указаны вместе, командлет игнорирует параметр PathType и проверяет синтаксический путь, не проверяя тип пути.
В соответствии с проблемой No 8607 исправление этого поведения может быть критическим изменением в будущей версии, где коммутаторы IsValid и PathType принадлежат к отдельным наборам параметров, и поэтому их нельзя использовать вместе, чтобы избежать этой путаницы.
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Примечания
Командлеты, содержащие существительное path (командлеты Path ), работают с именами путей и возвращают имена в кратком формате, который могут интерпретировать все поставщики PowerShell. Они предназначены для использования в программах и скриптах, где имя пути или его часть должны отображаться в определенном формате.
Используйте их так, как вы будете использовать Dirname, Normpath, Realpath, Join или другие манипуляторы пути.
Он предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет . Дополнительные сведения см. в разделе about_Providers.
Перечисление всех подразделов раздела реестра
Вы можете отобразить все элементы непосредственно в разделе реестра с помощью . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает элементы, непосредственно расположенные на диске PowerShell, который соответствует кусту реестра :
Это разделы верхнего уровня, отображаемые в разделе в редакторе реестра ().
Указать этот путь в реестре можно также, задав имя поставщика реестра с последующей строкой . Полное имя поставщика реестра имеет вид , но может быть сокращено до . Любая из следующих команд выводит содержимое элементов, непосредственно расположенных внутри .
Эти команды содержат список только непосредственно содержащихся элементов, как в оболочке UNIX или в ней. Для показа вложенных элементов необходимо указать параметр Recurse. Для вывода всех разделов реестра в используется приведенная ниже команда.
Командлет позволяет выполнять сложные операции фильтрации с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. С помощью командлета можно выполнить сложную фильтрацию на основе других свойств элементов.
Следующая команда находит все разделы в , у которых не более одного подраздела и ровно четыре значения:
Подробное описание
Поставщик реестра PowerShell позволяет получать, добавлять, изменять, удалять и удалять разделы, записи и значения реестра в PowerShell.
Диски реестра — это иерархическое пространство имен, содержащее разделы и подразделы реестра на компьютере. Записи и значения реестра не являются компонентами этой иерархии. Но они являются свойствами каждого из разделов.
Поставщик реестра поддерживает следующие командлеты, которые рассматриваются в этой статье.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Remove-ItemProperty
- Clear-ItemProperty
- Get-Acl
- Set-Acl
Перечисление файлов, папок и разделов реестра
Так как получение коллекции элементов из определенного расположения является обычной задачей, командлет предназначен специально для возврата всех элементов, найденных в контейнере, например в папке.
Если вы хотите вернуть все файлы и папки, содержащиеся непосредственно в папке , введите:
Описание выглядит примерно так, как при вводе команды в или в командной оболочке UNIX.
Сложные перечисления можно выполнять с помощью параметров командлета . Синтаксис командлета можно увидеть, введя следующее.
Эти параметры можно скомбинировать и сопоставить для получения настраиваемых выходных данных.
Вывод списка всех содержащихся элементов
Чтобы увидеть оба элемента в папке Windows и все элементы во вложенных папках, используйте параметр Recurse для . В списке отображается все, что находится в папке Windows, а также элементы в ее вложенных папках. Пример:
Принудительное перечисление скрытых элементов
Элементы, скрытые в проводник или не отображаемые в выходных данных команды. Чтобы показать скрытые элементы, используйте параметр Force для .
Пример:
Этот параметр называется Force, так как вы можете принудительно переопределить нормальное поведение команды. Force — это широко используемый параметр, который инициирует действие, которое командлет обычно не выполняет, хотя он не может выполнять никаких действий, которые подрывают безопасность системы.
Сопоставление имен элементов с подстановочными знаками
Команда принимает подстановочные знаки в пути к элементам списка.
Так как сопоставление с подстановочными знаками обрабатывается подсистемой PowerShell, все командлеты, которые принимают подстановочные знаки, используют одну и ту же нотацию и имеют одинаковое поведение сопоставления. Нотация с подстановочным знаком PowerShell включает:
- Звездочка () соответствует нулю или большему количеству вхождений любого символа.
- Знак вопроса () соответствует ровно одному символу.
- Открывающая квадратная скобка () и закрывающая квадратная скобка () заключают в себя набор символов для сопоставления.
Далее приводится несколько примеров работы спецификации из подстановочных знаков.
Чтобы найти в каталоге Windows все файлы, имеющие суффикс и ровно пять символов в основном имени, введите следующую команду.
Чтобы найти в каталоге Windows все файлы с именами, начинающимися на букву , введите следующее.
Чтобы найти все файлы с именами, начинающимися на x или z, введите следующее.
Дополнительные сведения о подстановочных знаках см. в разделе about_Wildcards.
Исключение элементов
Вы можете исключить определенные элементы с помощью параметра Exclude для . Это позволит вам выполнить сложную фильтрацию в одном операторе.
Например, вы пытаетесь найти библиотеку службы времени Windows в папке System32 и все, что вам известно об имени библиотеки, — то, что оно начинается с W и содержит 32.
Такое выражение, как , найдет все библиотеки DLL, которые отвечают этим условиям, но вам может потребоваться дополнительно отфильтровать файлы и пропустить все файлы win32. Эти файлы можно опустить с помощью параметра Exclude с шаблоном :
Смешивание параметров Get-ChildItem
В одной команде можно использовать несколько параметров командлета . Перед тем как комбинировать параметры, убедитесь, что понимаете принципы сопоставления подстановочных знаков. Например, следующая команда не возвращает результатов:
Результаты отсутствуют, даже если существуют две библиотеки, которые начинаются на букву z в папке Windows.
Результаты не возвращены, так как подстановочный знак указан как часть пути. Хотя команда и была рекурсивной, командлет ограничил элементы до тех, которые находятся в папке Windows с именами, заканчивающимися на .
Чтобы указать рекурсивный поиск для файлов, имена которых соответствуют специальному шаблону, используйте параметр Include.