Выбор графического файла Powershell
Обновлено: 21.11.2024
Облегчите жизнь пользователям ваших скриптов: вместо того, чтобы вводить пути к файлам/папкам в командной строке, позвольте им выбрать их в диалоговом окне с графическим интерфейсом.
При разработке сценариев PowerShell я часто находил полезным включить диалоговое окно файла или папки для выбора файлов или папок. Это упрощает пользователям выбор файлов или папок и предотвращает ошибки в путях к файлам.
Я перечислил три фрагмента кода PowerShell, которые я считаю полезными при разработке сценариев PowerShell, требующих выбора папки или файла графического интерфейса для выполнения функции:
- Диалоговое окно браузера папок
- Диалоговое окно браузера файлов (с включенным множественным выбором файлов)
- Диалоговое окно браузера файлов (для выбора одного файла)
Диалоговое окно браузера папок
Следующий сценарий, основанный на работе Frode F., можно использовать для вызова диалогового окна браузера папок Windows при запуске сценария PowerShell. Хотя существует множество решений для создания диалогового окна просмотра папок, большинство из них не справляется, когда пользователь нажимает «Отмена». Либо сценарий выдаст код ошибки и зависнет, либо иным образом приведет к сбою PowerShell. На мой взгляд, такой неэлегантный ответ неприемлем.
Диалоговое окно браузера папок Windows, инициированное в PowerShell.
Следующий код проверит, было ли нажато «ОК» (т. е. был ли выбран путь к папке), а затем выполнит некоторый код. Если нажать «Отмена», появится диалоговое окно подтверждения, в котором будет проверяться, намеревался ли пользователь отменить действие. Если они это сделали, программа элегантно закроется. В противном случае пользователь будет возвращен в диалоговое окно просмотра папок и получит еще одну возможность выбрать расположение папки.
Сценарий PowerShell проверит, намеревался ли пользователь нажать «Отмена», и либо вернет его в программу, либо закроет приложение.
Расположение папки сохраняется в PowerShell как $browse.SelectedPath .
Как указано в приведенном выше коде, можно настроить ряд переменных, включая $browse.SelectedPath, которая будет назначать начальный каталог, и $browse.ShowNewFolderButton, которая позволит добавить кнопку «Новая папка».
Если возникнет желание открыть диалоговое окно папки в разделе «Мой компьютер», замените $browse.SelectedPath = "C:\" на $browse.RootFolder = [System.Environment+SpecialFolder]'MyComputer' .
Диалоговое окно файлового браузера (с множественным выбором)
Следующий сценарий позволит пользователю выбрать несколько файлов в диалоговом окне PowerShell, а затем выполнить какое-либо действие с каждым из них, игнорируя остальные.
Диалоговое окно браузера файлов Windows, инициированное в PowerShell
В приведенном ниже примере пользователь может выбрать один из файлов .jpg или .jpg, но при желании его можно изменить на другие типы файлов или удалить иным образом. Функция, которую будет выполнять скрипт, определит, какие типы файлов должны быть целевыми. Дополнительные инструкции по группировке файлов доступны на веб-сайте Microsoft Developer Network.
Диалоговое окно файлового браузера (один файл)
Из приведенного выше сценария требуются лишь незначительные изменения, чтобы удалить функцию множественного выбора и применить сценарий к одному файлу, выбранному в диалоговом окне файлового браузера:
Диалоговое окно открытия файла/папки — отличный способ интерактивно получать входные данные для ваших сценариев. Он предоставляет файловый браузер, который обеспечивает гораздо более удобный подход, чем просто запрос пути. В этом посте я покажу вам, как использовать OpenFileDialog в ваших сценариях PowerShell.
- Создание ярлыка RDP, подписанного сертификатом, с помощью групповой политики – пятница, 9 августа 2019 г.
- Отслеживание времени работы веб-сервера с помощью скрипта PowerShell – вторник, 6 августа 2019 г.
- Как создать сценарий инвентаризации PowerShell для серверов Windows – пятница, 2 августа 2019 г.
Когда вы используете приложение Windows и вам нужно ввести данные для файла или папки, вы, вероятно, видели стандартное диалоговое окно открытия файла.
Диалог открытия файла
После загрузки сборки мы можем создать экземпляр объекта OpenFileDialog с помощью New-Object.
Выше видно, что конструктор класса OpenFileDialog имеет аргумент InitialDirectory. Это сообщает классу OpenFileDialog, какую папку отображать при появлении диалогового окна. В этом случае у меня есть диалоговое окно для отображения рабочего стола.
В этот момент диалоговое окно не отображается. Мы просто создаем экземпляр объекта. Чтобы отобразить диалоговое окно, нам нужно использовать метод ShowDialog().
Появится диалоговое окно. Я присваиваю результату ShowDialog() значение $null. Это потому, что вывод не возвращает ничего полезного для наших целей. Вы можете ожидать, что выходные данные вернут выбранное имя файла, но это не так. Затем система сохраняет информацию о файле в самом объекте OpenFileDialog.
Вы можете видеть выше, что объект OpenFileDialog теперь содержит всю информацию, собранную из выбранного файла.
Приведенный выше пример позволяет мне выбрать любой файл, но мы также можем ограничить ввод по типу файла, используя свойство Filter.
Теперь, когда отображается диалоговое окно, ниже вы можете видеть, что доступны только варианты выбора между документами Word и Excel.
Подпишитесь на рассылку новостей 4sysops!
Фильтрация по файлу
Для получения дополнительной информации об этом методе получения данных о расположении файла от пользователей см. информацию Microsoft MSDN.
Вот небольшая изящная функция PowerShell, которую вы можете добавить в свои скрипты. Много раз я хочу указать CSV или TXT или какой-либо другой файл в сценарии. Это легко сделать:
Но это означает, что вы должны ввести полный абсолютный или относительный путь к файлу. Вот это боль. Я знаю, о чем вы думаете… Должен быть лучший способ!
Есть! Используйте диалоговое окно открытия файла. Вы знаете, например, когда вы нажимаете «Файл», «Открыть», и открывается окно, и вы перемещаетесь по своей файловой системе и выбираете файл с помощью графического интерфейса. Как вы это делаете в PowerShell? Позволь мне показать тебе. Перво-наперво: давайте объявим функцию с несколькими элементами, которые нам понадобятся.
Теперь давайте откроем это и приступим к выбору файла.
В строке 5 мы создаем новый объект. Неудивительно, что этот объект является объектом OpenFileDialog. В строке 6 мы указываем тот начальный каталог, который мы получили в параметре. В строке 7 мы делаем кое-что интересное. Атрибут filter объекта OpenFileDialog определяет, какие файлы мы видим при просмотре. Это часть коробки.
Я ограничиваю свои файлы только CSV. Первая часть значения — это CSV (.csv), который отображается в диалоговом окне в меню. Вторая часть после вертикальной черты *.csv — это собственно фильтр. Вы можете сделать любой фильтр, какой захотите. Например, если вы хотите видеть только файлы, начинающиеся с «SecretTomFile», вы можете использовать фильтр SecretTomFile.
И последнее! Мы создали, определили и открыли диалоговое окно OpenFileDialog, но разве нам не нужно на самом деле получить результат того, какой файл был выбран? Да. Однако это довольно просто.
Атрибут Filename устанавливается, когда кто-то подтверждает открытие файла в диалоговом окне OpenFileDialog. В строке 9 мы возвращаем его тому, что вызвало наш скрипт.
Поэтому, чтобы использовать эту функцию так же, как в примере вверху этого поста, ваш код будет выглядеть следующим образом.
Я думаю, что это намного лучше, чем вводить имя файла каждый раз, когда вы хотите запустить скрипт. Я нахожу это особенно удобным для сценариев, которые я часто запускаю.
Благодаря графическому пользовательскому интерфейсу Windows 10 пользователи могут выполнять любые действия, просто щелкнув значок. Без графического интерфейса нам пришлось бы делать все из командной строки PowerShell или командной строки.
Однако умение работать с командной строкой — полезный навык, поскольку он дает вам быстрый доступ к функциям и операциям. Например, в некоторых ситуациях при работе с командной строкой или PowerShell вам нужно открывать папки или файлы. Вам не нужно выходить из окна только для того, чтобы найти папку или файл.
Открытие папок и файлов с помощью командной строки и PowerShell
В этом руководстве я покажу вам, как открывать папки прямо из командной строки и PowerShell на ПК с Windows 10.
- Как перейти к папке с помощью командной строки и PowerShell.
- Как открыть папку с помощью командной строки и PowerShell.
- Как закрыть файл с помощью командной строки и PowerShell.
В сообщении не забудьте заменить свое имя пользователя.
1] Как перейти к папке с помощью командной строки и PowerShell
Откройте командную строку, выполнив поиск cmd в меню «Пуск» и выбрав «Командная строка». Для PowerShell вы также можете найти его и открыть из меню «Пуск».
Введите следующую команду и нажмите ENTER, чтобы запустить ее:
ПРИМЕЧАНИЕ. В приведенной выше команде замените Path\To\Folder фактическим путем к папке, которую вы хотите открыть. Итак, это может стать:
Чтобы открыть файл, сохраненный в этой папке, введите имя файла и нажмите ENTER. Пример,
Кроме того, вы можете ввести полный путь к файлу без использования команды cd. Например,
2] Как открыть папку с помощью командной строки и PowerShell
Первый способ заключается в открытии файла, сохраненного в папке. Однако, если вы хотите открыть папку в проводнике с помощью командной строки или PowerShell, используйте команду запуска.
Командная строка
Чтобы открыть папку, добавьте путь к папке после команды запуска. Например, я могу перейти к папке Новая папка с помощью следующей команды:
Если вы хотите открыть текущую папку, запустите команду запуска с точкой (.):
Чтобы открыть родительскую папку для текущей папки, используйте две точки (..):
По нажатию ENTER указанная папка откроется в окне Проводника.
PowerShell
Чтобы открыть папку в проводнике с помощью PowerShell, введите один из следующих командлетов –
и добавьте путь к папке.
Чтобы открыть текущий каталог, используйте следующую команду:
3] Как закрыть файл с помощью командной строки и PowerShell
Чтобы закрыть уже открытый файл с помощью командной строки, используйте команду taskkill. Сначала перейдите к папке, используя первый метод:
Введите следующую команду, когда находитесь в правильном каталоге:
В приведенной выше команде замените часть имени файла на имя файла, который вы хотите закрыть.
Обратите внимание, что эта команда закрывает каждый момент открытого файла, и вы рискуете потерять несохраненные данные.
Надеюсь, вы найдете этот пост полезным.
Дата: 17 сентября 2020 г. Теги: CMD, PowerShell
Похожие записи
Команда Install-Module была найдена в модуле PowerShellGet, но модуль не может быть загружен
Как экспортировать список служб Windows с помощью командной строки
Как включить CTRL+C и CTRL+V в командной строке в Windows 11/10
[электронная почта защищена]
Кеши Иле – опытный эксперт в области технологий со степенью бакалавра в области электроники и степенью магистра в области цифрового маркетинга. Он руководит несколькими интернет-компаниями и ведет блоги, посвященные технологиям.
Читайте также: