Вот такая ситуация. У нас есть файловый сервер, настроенный в \ fileserver \, у которого есть папка для каждого пользователя в \ fileserver \ users \ first.last
Я запускаю команду xcopy для резервного копирования папки «Мои документы» со своего компьютера в их личную папку. Я выполняю следующую команду:
xcopy "C:\Users\%username%\My Documents\*" "\\fileserver\users\%username%\My Documents" /D /E /O /Y /I
Я незаметно запускал этот скрипт при входе в систему без ведома пользователей, чтобы я мог заставить его работать, прежде чем рассказывать им, что он делает. После того, как я обнаружил, что это не работает, я вручную запустил пакетный сценарий, который выполняет команду xcopy на одном из их компьютеров и получает ошибку отказа в доступе. Затем я вошел в тестовую учетную запись на своем компьютере и получил ту же ошибку.
Я проверил все разрешения для общего ресурса и безопасности, и они настроены так, как я хочу. Я могу вручную перейти к этой папке и создать новые файлы. Я могу перетаскивать элементы в папку \ fileserver \ users \ first.last, и это отлично работает.
Поэтому я пробую что-то еще, чтобы попытаться найти источник проблемы отказа в доступе. Я запустил команду xcopy, чтобы скопировать папку «Мои документы» в другое место на том же компьютере, но все равно получил ошибку отказа в доступе!
Таким образом, xcopy, похоже, лишен доступа, когда он пытается скопировать папку Мои документы.
Любые предложения о том, как я могу заставить это работать? Кто-нибудь знает причину ошибки отказа в доступе?
Давайте разберемся с этим.
Вы хотите скопировать папку «Мои документы» и все ее содержимое в какое-то место. Groovy.
Однако перенаправление папок (/ автономные файлы) через групповую политику - это не то, что вы собираетесь делать. Справедливо; это не для всех.
Но в ваш сценарий встроено множество предположений, и, вероятно, есть более простые способы сделать это.
Вместо этого вы могли:
Xcopy /S /Y "%USERPROFILE%\Documents" "\\server\%username%\Documents"
На моей очень-очень ванильной установке попытка этого просто сработала.
Есть и другие переменные, которые тоже могут быть полезны.
Далее: когда запускается скрипт? Если это вход в систему, он должен работать от имени пользователя, но вы можете обнаружить нарушения совместного доступа, если что-то также открывается или используется в это время.
Наконец, вы сможете запустить эту команду, не требуя SeBackupPrivilege; похоже, что у вас нет разрешений, которые, как вы думаете, у вас есть для этой учетной записи.
Да, и при запуске в сценарии входа в систему или при запуске вы можете оказаться в «коробочке», что снижает ваши эффективные разрешения и скорость.
Во-первых, возможно, это из-за лишнего '\ *' в первом аргументе xcopy.
Опять же, использование документов может помочь, потому что «Мои документы» - это просто точка пересечения с «Документами», только для обратной совместимости с некоторыми ограничениями, например вы не можете в нем участвовать.
Я подозреваю, что это / O - у пользователей, вероятно, нет прав на изменение списков управления доступом NTFS на целевой машине.
Пытаться Documents
вместо того My Documents
на вашем пути.
Попробуйте запустить xcopy из командной строки с повышенными привилегиями. т.е. щелкните правой кнопкой мыши> Запуск от имени администратора.
Ответ представляет собой комбинацию нескольких полученных ответов, и вот она.
В команде копирования это должно быть Документы а не Мои документы.
Используя / O аргумент убивал его. Я подозреваю, что проблема заключается в том, как объяснил Саймон, в том, что у пользователей нет прав на изменение списков ACL на цели.
Изменение этих двух пунктов заставило команду работать.
Папка "Документы и настройки" доставляла мне проблемы. Файл ntuser.dat недоступен во время использования. Поэтому я добавил .dat в новую строку в моем файле "exclude.txt", и у меня это работает. Итак, xcopy c: *. Xls i: \ xlsfiles / e / c / y /exclude:exclude.txt
(exclude.txt - это файл с ... 5 строками со строками сопоставления папок или строками сопоставления имени файла с cr lf)