Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вложение в условии else if elseif

Ответить
Настройки темы
PowerShell - [решено] Вложение в условии else if elseif

Аватара для alado

Новый участник


Сообщения: 10
Благодарности: 0


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Добрый день.
Подскажите пожалуйста, есть конструкция if else оформленная вот в таком стиле:
Код: Выделить весь код
if
{

}
elseif
{

}
         if
         {

         }
         else
         {

         }
elseif 
{

}
Получается, что вложенная конструкция в if и else не работает!


Более точнее код выглядит вот так:

Код: Выделить весь код
elseif ($traceroute.SelectedItem -eq $ConfigProperty5) 
	{
		$Summa.Enabled = $true
		$rasstreka.Text = $ConfigProperty6
		$rasstmore.Text = $ConfigProperty7
		$gateway.Text = $ConfigProperty8
		$uchastok.Text = $ConfigProperty202

		[array]$lstItemsmaterial = ("", "$global:ConfigProperty203", "$global:ConfigProperty204", "$global:ConfigProperty205")
		$material.Items.Clear();
		$material.Items.AddRange($lstItemsmaterial);
		$material.Text = $lstItemsmaterial[0].ToString();

		if ($material.SelectedItem -eq $ConfigProperty205) 
		{

			[array]$lstItemsvodoizmechenie = ("", `
				"$global:ConfigProperty208", `
				"$global:ConfigProperty209", `
				"$global:ConfigProperty210", `
				"$global:ConfigProperty211", `
				"$global:ConfigProperty212")
			$vodoizmechenie.Items.Clear();
			$vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
			$vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
		}
		elseif (($material.SelectedItem -eq $ConfigProperty203) -or ($material.SelectedItem -eq $ConfigProperty204)) 
		{

			[array]$lstItemsvodoizmechenie = ("", `
				"$global:ConfigProperty210", `
				"$global:ConfigProperty211", `
				"$global:ConfigProperty212")
			$vodoizmechenie.Items.Clear();
			$vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
			$vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
		}
		

	}
В моем случае не работает:

Код: Выделить весь код
if ($material.SelectedItem -eq $ConfigProperty205) 
		{

			[array]$lstItemsvodoizmechenie = ("", `
				"$global:ConfigProperty208", `
				"$global:ConfigProperty209", `
				"$global:ConfigProperty210", `
				"$global:ConfigProperty211", `
				"$global:ConfigProperty212")
			$vodoizmechenie.Items.Clear();
			$vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
			$vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
		}
		elseif (($material.SelectedItem -eq $ConfigProperty203) -or ($material.SelectedItem -eq $ConfigProperty204)) 
		{

			[array]$lstItemsvodoizmechenie = ("", `
				"$global:ConfigProperty210", `
				"$global:ConfigProperty211", `
				"$global:ConfigProperty212")
			$vodoizmechenie.Items.Clear();
			$vodoizmechenie.Items.AddRange($lstItemsvodoizmechenie);
			$vodoizmechenie.Text = $lstItemsvodoizmechenie[0].ToString();
		}

Отправлено: 13:46, 05-07-2018

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Получается, что вложенная конструкция в if и else не работает! - Конструкция объвлена неправильно, поэтому и не работает.

About If - https://docs.microsoft.com/en-us/pow...w=powershell-6

Код: Выделить весь код
$a = 10
$obj = 101

if($a -eq 1) {
	1
} elseif($a -eq 10) {
	"Inside elseif"
	if($obj -gt 100) {
		"`t->Inside if"
		"`t`tMore than 100"
	} else {
		"Less than 100"
	}
} else {
	"Unknown"
}
Вывод:
Код: Выделить весь код
Inside elseif
        ->Inside if
                More than 100
То что привели, какой-то отрывок кода без $traceroute, $ConfigProperty205, $material никак не облегчает понимание. Приводите весь код.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:08, 05-07-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для alado

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Kazun:
Приводите весь код. »
Пишу в PowerShell Studio, весь код на экспорте занимает 32 тысячи строк!

Отправлено: 18:17, 05-07-2018 | #3


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1218
Благодарности: 509

Профиль | Отправить PM | Цитировать


Цитата alado:
Пишу в PowerShell Studio, весь код на экспорте занимает 32 тысячи строк! »
Так весь вопрос в том, что конструкция не работает не потому, что во внутреннем коде powershell ошибка, а потому, что ошибка поселилась в Вашем коде.
Вы привели код частично, где нет ни значений используемых переменных/объектов, ни законченного кода, чтобы его проверить, ни результата выполнения кода и выдаваемой ошибки... поэтому вопрос Ваш, с большой вероятностью, канет в Лету.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 05-07-2018 | #4


Аватара для alado

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Ссылка на скачивание https://yadi.sk/d/UFr-nA763YwvFK , в тему вложить как вложение или как текст у меня не получилось, так как существуют ограничения на такой объем!

Отправлено: 09:14, 09-07-2018 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Проблема в скрипте в формировании материала, $material.SelectedItem - нельзя выбрать, потому что в этом блоке идет его формирование и всегда будет пусто.

Выбираем маршрут, разово заполняется материал, добавляем событие на выбор материала и только потом можно выполнить блок if ($material.SelectedItem -eq $ConfigProperty205).

Как пример добавляю,например, нa 5126:

Код: Выделить весь код
$material.add_SelectedValueChanged({
        if($material.SelectedItem -eq $ConfigProperty205) {
            msgbox $material.SelectedItem 
        }
    })



Т.е. надо продумать логику в скрипте, как пользователь будет выбирать материал с последующими изменениями переменной $vodoizmechenie
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:51, 09-07-2018 | #6


Аватара для alado

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Kazun, спасибо. Не додумал сам до SelectedValueChanged. По вопросу логики буду дальше думать.

Отправлено: 11:40, 09-07-2018 | #7


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1218
Благодарности: 509

Профиль | Отправить PM | Цитировать


Цитата alado:
Ссылка на скачивание »
Тогда вопрос:
А где в этом файле та часть кода, которая не работает:
Цитата alado:
В моем случае не работает: »
?

Ну и есть строки, начиная с 3817, в которых присутствует обращение к несуществующей переменной $dir, она появляется в строке 11977... это, как минимум, приведет к перманентному невыполнению условий.
И ещё в коде присутствует обращение к базе данных, в формате .xlsx, его бы тоже не мешало для полноты картины обозначить. Реальные данные, естественно, не нужны...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:58, 09-07-2018 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вложение в условии else if elseif

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2016 - outlook 2016 в office 365 вложение файла закрывается и пишет обновление dartne Microsoft Office (Word, Excel, Outlook и т.д.) 2 30-09-2016 10:46
2010 - Как проиграть звуковое вложение в файле docx плеером по выбору пользователя? borison Microsoft Office (Word, Excel, Outlook и т.д.) 6 18-05-2012 15:03
[решено] остановка функции при условии. yukuru AutoIt 3 26-07-2011 00:01
C/C++ - Вложение файлов. Chilli Программирование и базы данных 3 07-12-2010 09:02
Вложение RAR архивов alcos О сайте и форуме 7 22-09-2005 19:03




 
Переход