Как получить код завершения, когда я вызываю команду NET USE через Powershell?

У меня есть фрагмент PowerShell, ниже которого я намерен закрыть соединения с общими папками, вызвав инструмент NET.exe:

 if ($connectionAlreadyExists -eq $true){
            Out-DebugAndOut "Connection found to $location  - Disconnecting ..."
            Invoke-Expression -Command "net use $location /delete /y"  #Deleting connection with Net Use command
            Out-DebugAndOut "Connection CLOSED ..."
        }

ВОПРОС: Как я могу проверить, работала ли запущенная команда Net Use без ошибок? И если есть, как я могу поймать код ошибки.

1 ответ

Вы можете проверить значение $LASTEXITCODE, Это будет 0, если net use Команда выполнена успешно и ненулевая, если она не выполнена. например

PS C:\> net use \\fred\x /delete
net : The network connection could not be found.
At line:1 char:1
+ net use \\fred\x /delete
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (The network con...d not be found.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

More help is available by typing NET HELPMSG 2250.

PS C:\> if ($LASTEXITCODE -ne 0) { Write-Error "oops, it failed $LASTEXITCODE" }
if ($LASTEXITCODE -ne 0) { Write-Error "oops, it failed $LASTEXITCODE" } : oops, it failed 2
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Вы также можете захватить вывод ошибок из net use Командуй сам и делай с этим что-нибудь.

PS C:\> $out = net use \\fred\x /delete 2>&1

PS C:\> if ($LASTEXITCODE -ne 0) { Write-Output "oops, it failed $LASTEXITCODE, $out" }
oops, it failed 2, The network connection could not be found. 
More help is available by typing NET HELPMSG 2250.
Другие вопросы по тегам