2012-01-01 20 views
15

Bu başarılı olursa bu yüzden başka bir komut tarafından işlenebilecek bir eğer açıklamada şu çevreleyen denedim:Kontrol başarıyla

Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" | Foreach-Object { 
     $Localdrives += $_.Path 

ama bunu anlamaya olamaz. Bir işlev oluşturmayı bile denedim, ancak işlevin başarılı bir şekilde tamamlanıp tamamlanmadığını da kontrol edemedim.

cevap

10

deneyebileceğiniz:

$res = get-WmiObject -Class Win32_Share -Filter "Description='Default share'" 
if ($res -ne $null) 
{ 
    foreach ($drv in $res) 
    { 
    $Localdrives += $drv.Path 
    } 
} 
else 
{ 
    # your error 
} 
+0

Şimdi bunu neden düşünemedim !! Çok teşekkür ederim :) – Sune

36

$ deneyin? Otomatik değişken: about_Automatic_Variables itibaren

$share = Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" 

if($?) 
{ 
    "command succeeded" 
    $share | Foreach-Object {...} 
} 
else 
{ 
    "command failed" 
} 

:

$? 
    Contains the execution status of the last operation. It contains 
TRUE if the last operation succeeded and FALSE if it failed. 
... 

$LastExitCode 
    Contains the exit code of the last Windows-based program that was run. 
+1

Bu sefer ilk çözümü tercih ettim, ama bu kesinlikle bunu yapmak için harika bir yoldur. Bir kez daha teşekkürler Shay :) – Sune

+0

Üzgünüz: Test 'get-WmiObject -Class Win32_Share -Filter" Açıklama = 'glurp' "', ama bu durumda $? doğrudur ve bu açıklamayla paylaşılmamaktadır. – JPBlanc

+5

Komut, bir hata döndürmedi $? $ true olarak ayarlandı. Bu aynıdır: dir * .No BÖLÜMExtension, sonuç hiçbir şey değildir ve bir hata olarak kabul edilmez. Komutun herhangi bir sonuç döndürüp döndürmediğini test etmek istediğinizde @ JPBlanc'ın çözümünü kullanın. –