Получить правильный статус переменной из команды cmd в powershell - PullRequest
0 голосов
/ 18 октября 2018
$vssstatus = vssadmin list shadowstorage /for="c":\ | select-object -skip 3 | Out-String
if ($vssstatus -like "No items found that satisfy the query.")
{
Write-Host "VSS Shadow Copy: Disabled"
Exit 1010
}

if ($vssstatus -like "Error: Invalid option value.")
{
Write-Host "Partition name incorrect or missing"
Exit 1010
}

else {
Write-Host "VSS Shadow Copy: Enabled | 
$vssstatus"
Exit 0
}

всегда возвращается в другое состояние, потому что команда cmd всегда начинается с одного и того же:

vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

No items found that satisfy the query.

пыталась скрыть первые 3 строки с помощью select-object -skip 3, но это doenstработать, как я хотел, powershell все еще видит это: я думаю, что объект select скрывает его только для пользователя, а не для сценария.

vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Есть идеи, как заставить это работать правильно?Большое спасибо

1 Ответ

0 голосов
/ 18 октября 2018

Вы проделали хорошую работу, чтобы продвинуться так далеко, вы почти на месте.

Оператор -like является оператором сравнения символов подстановки в PowerShell, и обратите внимание, что вам не хватает в lines 2 & 8?Некоторые подстановочные знаки!Оператор -Like не будет работать без `em.

Подстановочный знак PowerShell - это символ звездочки *, давайте добавим его и посмотрим, что произойдет.

Я намеренно выброшуошибка, указав букву диска, которой нет на моем компьютере (забытый диск A: я все еще люблю тебя).

$vssstatus = vssadmin list shadowstorage /for="A":\ | select-object -skip 3 | Out-String
if ($vssstatus -like "*Error: Invalid option value.*")    {
    Write-Warning "Partition name incorrect or missing"
    #Exit1010 <--I don't want to exit for this example
}

WARNING: Partition name incorrect or missing

Все, что я изменил, это добавление * символов вокруг поискастрока в строке 2 моего примера выше.

С подобной настройкой вашего собственного кода, вы в основном уже сделали, так что вы должны чувствовать себя хорошо по этому поводу.

...