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

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

Ответить
Настройки темы
PowerShell - [решено] Продолжить выполнение, если значение True

Аватара для IVa_

Старожил


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


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

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


для сравнения переменных используется оператор -math если значение переменной верное тогда продолжить выполнение скрипта.
$a=12
"$a" -math "1."
true
Продолжить выполнение..
Если Переменная $a false не соответствует 12 использовать оператор -replase
Вопрос каким образом поместить в переменную $a с помощью -replase "том: (буква диска)" отформатированного диска.
Код: Выделить весь код
Get-WMIObject -class win32_diskdrive -filter "Caption="000000000 ata device"" | format-list *
Использовать оператор $Matches.
Или Get-psDrive -Match "А вот как указать размер диска в 80Gb из списка выводимых объектов и извлечь букву присвоенную после форматирования, после чего передать значение оператору -replase для помещения в переменную $a "
в этом случае скрипт будет работать, а значение false исправлено.

Отправлено: 00:01, 11-03-2015

 

Аватара для IVa_

Старожил


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

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


Код: Выделить весь код
get-psdrive | where-object {$_.used -match "^[(70-80)]"}
а вот как получить свойство $_name в $maches ?

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 00:46, 11-03-2015 | #2



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

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


Ветеран


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

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


IVa_, Что-то как-то туманно..
Код: Выделить весь код
gwmi win32_logicaldisk | where { $_.drivetype -eq 3 } |
foreach {

    "$($_.deviceid) {0:f} Gb" -f ($_.size / 1Gb)

}

Отправлено: 00:49, 11-03-2015 | #3


Аватара для IVa_

Старожил


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

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


нужно проверить имя объекта в переменной после форматирования диска,если имя объекта, а в моем случае жесткого совпадает с значением в переменной, то идет продолжение выполнения сценария.Если после проверки значение False, тогда извлекаю командой имя объекта, и помещаю его в переменную которая не соответствует, с помощью оператора -raplase
format /q
$a = "C:\"
"$a" -match "C"
false
В случае если значение после проверки false, выполняется команда
Код: Выделить весь код
gwmi win32_logicaldisk | where { $_.drivetype -eq 3 } |
foreach {

    "$($_.deviceid) {0:f} Gb" -f ($_.size / 1Gb -match "^(80015491072)")

}

$Matches
-raplase может изменить данные внутри переменной?
Проблема в том что я не могу сообразить как мне в переменную $a вставить данные из $matches, что-бы значение было True

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 01:41, 11-03-2015 | #4


Старожил


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

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


Вот так вот чтоли?
Код: Выделить весь код
$a = "C:\"
if (("$a" -match "C") -eq $true)  { Write-Host OK
} else {
          gwmi win32_logicaldisk | where { $_.drivetype -eq 3 } |
          foreach {
               "$($_.deviceid) {0:f} Gb" -f ($_.size / 1Gb -match "^(80015491072)")
                       }
        $Matches
        }

Последний раз редактировалось Molchune, 11-03-2015 в 08:55.


Отправлено: 08:49, 11-03-2015 | #5


Аватара для IVa_

Старожил


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

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


нужно проверить переменную $a на правильность буквы локального диска после форматирования, если буква в процессе форматирования изменилась тогда внести в переменную $a значение присвоенной буквы после форматирования.То есть, до форматирования была C после стала q тогда будет false при этом значении нужно извлечь букву из команды и внести изменения в переменную $a.
Цитата Molchune:
Вот так вот чтоли? »
Код: Выделить весь код
 $a="C:\"
"$a" -match "C"
проверить может и это выражение? правильно.
А в случае значения false в переменную $a внести изменения из команды
Код: Выделить весь код
gwmi win32_logicaldisk | where { $_.drivetype -eq 3 } |
foreach {

    "$($_.deviceid) {0:f} Gb" -f ($_.size / 1Gb -match "^(80015491072)")

}
вчера смотрел веб-каст про -replase оператора замены и $matches.И подумал почему бы не воспользоваться этими операторами.Но проблема в том что после получения нужного раздела локального диска ($_.size / 1Gb -match "^(80015491072)") не удается извлечь свойство $_.name в $maches , то есть вместо OK нужен параметр ($_.name)

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 10:08, 11-03-2015 | #6


Ветеран


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

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


IVa_, Объясните, что вы хотите получить. Если я правильно догадываюсь, то через размер узнать название:
Код: Выделить весь код
gwmi win32_logicaldisk | where { $_.size -eq 1234567890 } | foreach { $_.name }
gwmi win32_logicaldisk -filter "size = 1234567890" | foreach { $_.name }
gwmi -query "select * from win32_logicaldisk where size = '1234567890'" | select -expand name
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:42, 11-03-2015 | #7


Аватара для IVa_

Старожил


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

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


Получить хочу букву диска (оно же имя объекта).Да через размер, другого способа я не нахожу.После получения этой буквы ее сохранить в переменную $a.

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 10:49, 11-03-2015 | #8


Ветеран


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

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


IVa_,
Код: Выделить весь код
# только свойство 'name'

gwmi win32_logicaldisk | where { $_.size -eq 1234567890 } | foreach { $a = $_.name }
$a
Или сразу весь объект:
Код: Выделить весь код
# все свойства и методы, посмотреть можно командой '$a | get-member'

$a = gwmi win32_logicaldisk | where { $_.size -eq 1234567890 }
$a.name
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:58, 11-03-2015 | #9


Аватара для IVa_

Старожил


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

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


Я подумал следующее аз зачем все это?Если можно поступить следующим образом из команды
Код: Выделить весь код
gwmi win32_logicaldisk | where { $_.size -eq 1234567890 } | foreach { $_.name }
gwmi win32_logicaldisk -filter "size = 1234567890" | foreach { $_.name }
gwmi -query "select * from win32_logicaldisk where size = '1234567890'" | select -expand name
занести в $a букву диска.

-------
Одна и та же информация в разное время может быть полезной и бесполезной.


Отправлено: 11:10, 11-03-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
CMD/BAT - Выполнение команды, если в файле логов пинга повторяются строки VarseKc Скриптовые языки администрирования Windows 2 07-12-2014 15:59
Любой язык - выполнение команды, если есть пинг Anufriev Скриптовые языки администрирования Windows 0 27-09-2013 10:59
Загрузка - XP SP3. Значение «громкость» сбрасывается в среднее значение при перезагрузке. mitkadritka Microsoft Windows 2000/XP 9 24-02-2012 20:37
PowerShell - Условие на сравнение свойства объекта, имеющего логическое значение: True, False dosperados Скриптовые языки администрирования Windows 5 26-09-2011 09:09




 
Переход