Size: a a a

PowerShellRus - о Powershell (и не только) на русском

2017 October 04

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
ID:239892337
Так что вариант с $? так себе
Почему?
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
Всё же правильно, не?
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
вот тоже не пойму
источник

NK

ID:239892337 in PowerShellRus - о Powershell (и не только) на русском
Смотри выше, он работает неправильно
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
Что именно неправильно?
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
robocopy вернул код ошибки, и $? равняется $false.
источник

NK

ID:239892337 in PowerShellRus - о Powershell (и не только) на русском
robocopy отработал, а вот $?  - дал неверный результат
источник

NK

ID:239892337 in PowerShellRus - о Powershell (и не только) на русском
0×01 One or more files were copied successfully (that is, new files have arrived).
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
У robocopy просто интерфейс такой странноватый, он иногда возвращает ненулевой код даже если всё ок. Такие случаи нужно отдельно обрабатывать, это нормально.
источник

NK

ID:239892337 in PowerShellRus - о Powershell (и не только) на русском
0×00 No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
а, ну тут да
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
в случае, если ненулевой код выхода, лучше эт юзать
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
а так сгодится и булевый $?
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
смотря какая задача, однако
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
Обычная конвенция (в среднем по больнице), которая поддерживается $? — это когда ненулевой код обозначает ошибку.
источник

a

a1eXei in PowerShellRus - о Powershell (и не только) на русском
$p = Start-Process psftp.exe -NoNewWindow -Wait -PassThru -RedirectStandardOutput $log -ArgumentList "-l login -pw pass server -b $conf -v -be"
if($p.ExitCode -eq 0) { Move-Item -Path $File -Destination $Archive }
я например вот так в скрипте ловлю ошибку и перемещаю файлы в архив
источник

NK

ID:239892337 in PowerShellRus - о Powershell (и не только) на русском
PS > Invoke-Expression "BadCommand"
BadCommand : The term 'BadCommand' i
program. Check the spelling of the n
At line:1 char:1
+ BadCommand
+ ~~~~~~~~~~
   + CategoryInfo          : Object
   + FullyQualifiedErrorId : Comman

PS > $?
True
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
a1eXei
$p = Start-Process psftp.exe -NoNewWindow -Wait -PassThru -RedirectStandardOutput $log -ArgumentList "-l login -pw pass server -b $conf -v -be"
if($p.ExitCode -eq 0) { Move-Item -Path $File -Destination $Archive }
я например вот так в скрипте ловлю ошибку и перемещаю файлы в архив
А я часто использую вот такой враппер для простых операций:
function exec($command) {
   & $command $args
   if (!$?) {
       throw "[error] $command $args = $LASTEXITCODE"
   }
}


Используется, например, так:
exec yarn install --ignore-engines


(хотя у этого варианта использования есть проблемы с stderr и с параметрами, которые начинаются с одинарного -)

В случае, если процесс вернул ошибку — она превращается в исключение и дальше обрабатывается в соответствии с $ErrorActionPreference.

Ну и, понятное дело, с robocopy это не пройдёт, там надо смотреть $LASTEXITCODE.
источник

J

Jan Baton Makaron in PowerShellRus - о Powershell (и не только) на русском
а можешь объяснить, почем у в примере чеботова косячит? *котелоквари*
источник

Dv

Dr. Friedrich von Never in PowerShellRus - о Powershell (и не только) на русском
Jan Baton Makaron
а можешь объяснить, почем у в примере чеботова косячит? *котелоквари*
Говорят, что вот поэтому: https://stackoverflow.com/a/32349023/2684760
источник