Как вывести файлы с виртуального (субстратного) диска в groovy?

Я люблю заводные. Это очень мощный скрипт, и мы используем его везде. Недавно на сервере Jenkins, где мы пытаемся получить некоторые файлы, которые находятся на виртуальном диске, созданные командой subst. Проблема в том, что кажется, что Groovy не поддерживает виртуальные диски, но я не нашел никакого подтверждения на этот счет. Это правда, есть ли обходной путь для этого?

Вот пример кода, который мы используем:

import groovy.io.FileType

def list = []
//the original file path for T: is C:\Users\MyUser\workspace\MyProject\src\test\data
def dir = new File("T:" + "\\")
dir.eachFile (FileType.FILES) { file ->
  list << file
}

list.each{
  println "${it}"
}

Результаты, которые мы получили:

[EnvInject] - Оценка содержимого скрипта Groovy [EnvInject] - [ОШИБКА] - Проблемы возникают при внедрении переменных env, определенных в оболочке сборки: org.jenkinsci.lib.envinject.EnvInjectException: Не удалось оценить скрипт. java.io.FileNotFoundException: T:. Смотрите системный журнал для получения дополнительной информации

Любая помощь приветствуется.

1 ответ

Я нашел ответ сам, но вход @Hugues Moreau 9 привел меня к ответу.

Это была проблема с разрешением. Jenkins работает под моей учетной записью по умолчанию, но проблема была вызвана Apache (httpd.exe). httpd.exe работал как системная учетная запись и не имел доступа к T:. Я загрузил PSEXEC.EXE с веб-сайта https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx и этим инструментом открыл командную строку как пользователь SYSTEM:

PSEXEC -i -s -d CMD

После этого я создаю подкаталог T: для пользователя SYSTEM. Теперь у Jenkins и Apache есть доступ к виртуальному диску.

Как указывает Хью, более точное описание и вопрос здесь: /questions/8492188/sopostavte-setevoj-disk-kotoryij-budet-ispolzovatsya-sluzhboj

Другие вопросы по тегам