Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Продолжить выполнение, если значение True (http://forum.oszone.net/showthread.php?t=296707)

IVa_ 11-03-2015 00:01 2481147

Продолжить выполнение, если значение True
 
для сравнения переменных используется оператор -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 исправлено.

IVa_ 11-03-2015 00:46 2481150

Код:

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

Foreigner 11-03-2015 00:49 2481151

IVa_, Что-то как-то туманно..
Код:

gwmi win32_logicaldisk | where { $_.drivetype -eq 3 } |
foreach {

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

}


IVa_ 11-03-2015 01:41 2481159

нужно проверить имя объекта в переменной после форматирования диска,если имя объекта, а в моем случае жесткого совпадает с значением в переменной, то идет продолжение выполнения сценария.Если после проверки значение 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

Molchune 11-03-2015 08:49 2481191

Вот так вот чтоли?
Код:

$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
        }


IVa_ 11-03-2015 10:08 2481214

нужно проверить переменную $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)

Foreigner 11-03-2015 10:42 2481233

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


IVa_ 11-03-2015 10:49 2481236

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

Foreigner 11-03-2015 10:58 2481244

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


IVa_ 11-03-2015 11:10 2481253

Я подумал следующее аз зачем все это?Если можно поступить следующим образом из команды
Код:

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 букву диска.

IVa_ 11-03-2015 13:21 2481314

Код:

$a = gwmi win32_logicaldisk | where { $_.size -eq 80015491072 } | foreach { $_.name }
gwmi win32_logicaldisk -filter "size = 80015491072" | foreach { $_.name }
gwmi -query "select * from win32_logicaldisk where size = '80015491072'" |  select  -expand name
Out-String -InputObject  $a -Width 5
$a -match "[a-z]"
$a

Если я правильно понимаю Out-String записывает значения в $a ?
Если да, то тогда это избавит меня от сомнений, неправильной буквы в переменной после форматирования диска.
И это здорова.Я могу быть уверен что ошибок не допущу.

Foreigner 11-03-2015 13:38 2481323

IVa_, Зачем вам аутстринг? Я чуть ранее привел пример, как назначить переменную $a

IVa_ 11-03-2015 15:47 2481375

Вижу свой результат, не обратил внимание.Благодарен за направление . . .


Время: 16:23.

Время: 16:23.
© OSzone.net 2001-