Ошибка перенаправления на «NUL»: FileStream не открывает устройства Win32

Я пытаюсь убрать многословие из команды choco install в AppVeyor. Вот что я пытался (как предложено здесь):

if (Test-Path "C:/ProgramData/chocolatey/bin/swig.exe") {
    echo "using swig from cache"
} else {
    choco install swig > NUL
}

Однако это не удается с:

Redirection to 'NUL' failed: FileStream will not open Win32 devices such as
disk partitions and tape drives. Avoid use of "\\.\" in the path.
At line:4 char:5
+     choco install swig > NUL
+     ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : RedirectionFailed

Command executed with exception: Redirection to 'NUL' failed: FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of "\\.\" in the path.

Итак, мой вопрос: есть ли способ подавить многословность команды choco install в PowerShell на AppVeyor?


person malat    schedule 30.12.2015    source источник
comment
stackoverflow.com/questions/5260125/   -  person beatcracker    schedule 30.12.2015
comment
Бросив это туда - вы должны добавить -y к аргументу, так как он может не завершить установку в зависимости от версии choco.   -  person ferventcoder    schedule 31.12.2015


Ответы (1)


nul — пакетный синтаксис. В PowerShell вместо этого вы можете использовать $null, как указал Матиас Р. Джессен в своем комментарии:

choco install swig > $null

Другие варианты включают передачу в командлет Out-Null, сбор вывода в переменной или преобразование его в void:

choco install swig | Out-Null
$dummy = choco install swig
[void](choco install swig)
person Community    schedule 30.12.2015
comment
Это не относится к оболочке. Это действительное собственное имя файла Win32 для устройства NUL. Но большая часть .NET их не позволяет. - person Michel de Ruiter; 06.01.2016