Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
1

Как оформить подсказки при вводе параметров?

08.09.2016, 11:02. Показов 2867. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте

Подскажите пожайлуста
Как оформить подскази при вводе параметров

Вот пример кода

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
clear
#Get-Service -Name $args[0] -ComputerName $args[1]
#get-help Get-Service -full
 
write-host **************************************
write-host Создаем имя функции - par
write-host **************************************
write-host **************************************
write-host Значения в функцию передаем с помощью параметров
write-host Параметры можно определить внутри фигурных скобок, используя 
write-host ключевое слово 'Param'
write-host **************************************
# мой совет, всегда указывайте [CmdletBinding()] 
# в начале скрипта (должен идти до секции param()), 
# чтобы можно было сразу сказать, что это расширенная функция. 
# Так же, учтите, что если эта конструкция указана, но ваша 
# функция никаких аргументов не принимает, вы должны 
# прописать секцию param(). Хотя бы пустую.
 
 
function Advanced
{ 
 
[CmdletBinding()]
# Этот атрибут делает функцию расширенной 
 
Param (
# Используем аргумент Mandatory и Position
[Parameter (Mandatory=$true, Position=1,
                         ValueFromPipeline=$true)]
[PSDefaultValue(Help = 'например alg')]
[string]$service = $(read-host "Введите имя службы"),
   
# Аргумент ValueFromPipeline определяет, что параметр принимает 
# входные данные из объекта конвейера.
# $service и $computer  - это параметры, который при вызове функции
# появятся в строке ввода, чтобы пользователь вввел нужное значение
 
 
[Parameter (Mandatory=$true, Position=2,
                      ValueFromPipeline=$true)]
[string]$computer = $(read-host "Введите имя компьютера")
)
 
Get-Service -ServiceName $service -ComputerName $computer
}
write-host ***** Вызов функции ****************
Advanced
При отработке кода появляется запрос параметра
Укажите значения для следующих параметров:
service:
Как можно сюда добавить еще подсказку в виде ввода возможных параметров, плюс проверку на ввод неправильного значения, на основе какого либо шаблона ?

Например
В другом подобном коде запрашивается IP адрес сетевой карты, предлагается ввести одноименный параметр, например
IPaddr, при этом запросе, так же сразу выводится подсказка , например

Введите адреса в диапазоне 10.0.0.1 - 10.0.0.255
При неправильном вводе, например 10.0.1.1, появлялось бы сообщение
адрес не находится в нужном диапазоне
Как при этом добавить проверку на ввод неправильного написания адреса
10,0,0,1, то есть проверка по формату написания?

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 11:02
Ответы с готовыми решениями:

Как реализовать подсказки при вводе в input?
Добрый день Киберовцы! =) Идея такая: Нужно чтоб при вводе в поле, всплывали подсказки(ну это...

Как при вводе email в TextBox предлагать подсказки ранее введенных?
Как при вводе emaila предлагать подсказки ранее введенных? Вообще думаю хранить в xml файле, а...

Существует ли возможность создания подсказки при вводе
Дано поле, туда вводится название чего-либо, попутно вводу выходят подсказка, предпологаемые слова...

Visual studio 2010 professional. не отображаются подсказки при вводе кода
доброго времени суток. подобная проблема уже поднималась на форуме, но мне не помогло. решения я не...

8
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
08.09.2016, 14:23 2
Откуда сие копипастили?
Вообще, для начала Вам немешало бы внимательно прочитать:
PowerShell
1
2
man abour_functions_advanced
man about_functions_advanced_parameters
а уж после задавать вопросы вроде "как проверить диапазон" и иже с ними.
Во-вторых, с чего Вы взяли, что PS должен отображать подсказку? Параметр он и есть параметр, любое недопустимое с точки зрения кода значение будет порождать исключение в хосте, тем паче хост не какая-нибудь IDE для блондинок, а всего лишь интерпретатор.
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
09.09.2016, 10:36  [ТС] 3
cам написал
комментарии писал на основе советов с блогов и справок
0
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.09.2016, 10:49 4
masli, Если хотите красивый диалог, подсказки комментарии и прочее, пишите winform-приложение.
Класс system.windows.forms можно использовать в powershell.
хост powershell - немного для других целей
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
14.09.2016, 16:59  [ТС] 5
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
 [CmdletBinding()] 
   param (
         [parameter  (mandatory=$true,
                           ValueFromPipeline=$true,
                           Position=0,
                           HelpMessage="Справочное сообщение")]
                          [string[]]
                          $title1
                           )
 
  write-host $title1
  
   
 }
HelpMessage="Справочное сообщение" - данный аргумент не отрабатывается
0
504 / 157 / 49
Регистрация: 27.02.2016
Сообщений: 811
16.09.2016, 07:27 6
как раз отрабатывается :

Код
PS C:\Users\Serguei> . .\test.ps1
PS C:\Users\Serguei> Test

cmdlet Test at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
title1[0]: !?
Справочное сообщение
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
19.09.2016, 17:33  [ТС] 7
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear
 
function help {
 [CmdletBinding()] 
   param (
         [parameter  (mandatory=$true,
                           ValueFromPipeline=$true,
                           Position=0,
                           HelpMessage="введите сообщение")]
                          [string[]]
                          $title1
                           )
 
  write-host $title1
  
   
 }
help
Вывод

PowerShell
1
2
3
4
5
6
7
8
Командлет help в конвейере команд в позиции 1
Укажите значения для следующих параметров:
(Для получения справки введите !?.)
title1[0]: !?
введите сообщение
title1[0]: "проверка"
title1[1]: 
"проверка"
Как то громоздко, в общем этот параметр негде и применить, это не то что хотел
0
504 / 157 / 49
Регистрация: 27.02.2016
Сообщений: 811
19.09.2016, 19:41 8
тогда руками , без mandatory
PowerShell
1
2
3
4
 if (-not [bool]$PSBoundParameters['title1'].IsPresent) { 
 
 
... }
0
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
21.09.2016, 14:56  [ТС] 9
Цитата Сообщение от skouzmine Посмотреть сообщение
тогда руками , без mandatory

PowerShell
1
2
if (-not [bool]$PSBoundParameters['title1'].IsPresent) { 
... }
поясните пожайлуста на примере

Например на этом коде

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function Advanced
{ 
 
[CmdletBinding()]
# Этот атрибут делает функцию расширенной 
 
Param (
# Используем аргумент Mandatory и Position
 
[Parameter (Mandatory=$false, Position=1
                                         )]
 
[string]$service = $(read-host "Введите имя службы"),
   
# Аргумент ValueFromPipeline определяет, что параметр принимает 
# входные данные из объекта конвейера.
# $service и $computer  - это параметры, который при вызове функции
# появятся в строке ввода, чтобы пользователь вввел нужное значение
 
 
[Parameter (Mandatory=$false,Position=2
                                        )]
[string]$computer = $(read-host "Введите имя компьютера")
)
 
Get-Service -ServiceName $service -ComputerName $computer
}
Advanced
Добавлено через 5 минут
Замена этому, с проверкой на правильность ввода
Цитата Сообщение от masli Посмотреть сообщение
PowerShell
1
$service = $(read-host "Введите имя службы")
0
21.09.2016, 14:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2016, 14:56
Помогаю со студенческими работами здесь

Вывод ошибки при вводе неверных параметров в textbox
Помогите! Допустим у нас есть 1 textbox и в него можно записывать только цифры, как вывести...

Оформить код, как функцию, изменяющую значения параметров
Помогите!) как можно оформить как функцию, изменяющуюся значения параметров?? вот задача) <?php...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout << "Введи число" << endl; cin >> choice; if (choice == 1) { cout <<...

Как создать свой intelisense [подсказки при наборе]
Начало темы, идея — https://www.cyberforum.ru/windows-forms/thread2114035.html Подсказки первых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru