Mengapa pekerjaan Penjadwal Tugas tidak dapat mengakses drive jaringan yang dipetakan?

27

Saya memiliki tugas Penjadwal Tugas untuk menjalankan Robocopy untuk membuat cadangan file lokal ke jaringan berbagi. Saya harus menggunakan kredensial domain untuk mengakses pangsa jaringan tetapi komputer lokal tidak ada di domain, dan pekerjaan dijalankan sebagai admin lokal. Solusi iniuntuk sementara memetakan dan memetakan jaringan berbagi berfungsi tetapi kata sandi saya terbuka di teks biasa untuk siapa saja yang melihat tindakan pekerjaan Penjadwal Tugas. Saya lebih suka memetakan drive jaringan secara normal secara semi-permanen sehingga tugas Penjadwal Tugas hanya menjalankan Robocopy dan merujuk ke huruf drive yang sesuai. Namun saya selalu mendapatkan kesalahan "Sistem tidak dapat menemukan jalur yang ditentukan." di Robocopy log saat menjalankan ini dari Penjadwal Tugas, meskipun perintah berfungsi dengan baik dari prompt perintah yang ditinggikan (pekerjaan diatur untuk dijalankan dengan hak istimewa tertinggi). Juga perhatikan saya telah melakukan tweak registri ini untuk mengakses drive yang dipetakan dari prompt perintah yang ditinggikan.

EDIT: Untuk memperjelas, masuk sebagai admin lokal, saya meluncurkan Windows Explorer sebagai administrator. Saya memetakan jaringan berbagi untuk mendorong huruf Y. Saya meluncurkan prompt perintah sebagai administrator dan menjalankan

C:\Windows\System32\Robocopy.exe C:\temp Y:\temp

Bekerja dengan baik. Saya membuat tugas Penjadwal Tugas untuk menjalankan perintah yang sama persis, apakah pengguna masuk atau tidak, dengan hak istimewa tertinggi. Saya menjalankannya dan mendapatkan kesalahan. Saya menulis ke log dan mendapatkan

ERROR 3 (0x00000003) Getting File System Type of Destination Y:\temp\
The system cannot find the path specified.

diikuti oleh

ERROR 3 (0x00000003) Creating Destination Directory Y:\temp\
The system cannot find the path specified.
Craig W
sumber
Apakah jalur lokal Anda atau jalur jaringan memiliki ruang di dalamnya? Jika demikian, apakah Anda merangkum lintasan dengan tanda kutip ganda di awal dan akhir lintasan?
Sun
@SunWKim Tidak ada spasi di kedua jalur.
Craig W
apa baris perintah yang Anda gunakan untuk melakukan pencadangan dari lokal ke jaringan? Apa jenis jaringan yang Anda back up? Buat saya berpikir mungkin berbagi jaringan tidak tersedia (tidak terhubung) ketika Anda melakukan perintah cadangan.
Sun
Apakah itu berjalan sebagai pengguna Anda atau hanya "admin." Jika itu adalah pengguna Anda, apakah drive tersebut terus dipetakan untuk pengguna Anda?
Nick
@ SunWKim Ya, drive terhubung setelah pemetaan. Admin lokal tidak memiliki hak untuk berbagi jaringan itu sebabnya saya harus memetakannya sebagai pengguna yang berbeda sebelum menjalankan Robocopy.
Craig W

Jawaban:

17

Drive yang dipetakan adalah konsep Antarmuka Pengguna dan tidak tersedia untuk tugas-tugas latar belakang seperti itu. Akses target melalui UNC dan pastikan bahwa pengguna yang menjalankan tugas memiliki akses ke target.

Mendongkrak
sumber
Tidak memungkinkan. Komputer tidak ada di domain jadi saya harus menjalankan tugas sebagai pengguna non-domain tetapi hanya pengguna domain yang memiliki akses ke jaringan berbagi.
Craig W
Saya tahu ini sangat terlambat untuk permainan, tetapi sudahkah Anda mencoba memisahkan pekerjaan Anda menjadi 2 tugas yang dijadwalkan, satu untuk berbagi jaringan dengan kredensial domain dan satu lagi berjalan sebagai admin lokal dengan akses ke drive yang dipetakan? Anda hanya perlu mengejutkan mereka atau menggunakan file mutex atau sesuatu untuk memastikan mereka pergi secara berurutan.
Dan Csharpster
7

Dalam kasus saya yang harus saya lakukan adalah hapus centang pada run with highest privilegesflag tetapi saya menjalankan tugas pada pengguna yang sama dengan pengguna yang memetakan drive.

Peter
sumber
Itu untuk saya. Masuk akal.
Tom Haws
1

Opsi lain hanya menggunakan jalur jaringan penuh, karena Robocopy mendukungnya. yaitu robocopy c: \ temp \\ server \ share \ temp

Atau lebih baik lagi, jalankan backup di server itu sendiri. Buat akun admin domain hanya untuk proses pencadangan. Umpan robocopy kata sandi dari file teks yang hanya bisa diakses admin domain.

Beberapa tahun yang lalu saya membuat beberapa skrip .cmd yang akan membuat cadangan file-file penting untuk setiap sistem di jaringan dengan cara ini. Satu-satunya program eksternal yang saya gunakan adalah perintah Grep Cgywin, dan pengirim pesan smtp command prompt.

Saya membuat satu skrip yang akan memindai jaringan untuk sistem. Itu akan membuat file teks dari semua nama sistem, dan mengingatkan saya melalui email dari setiap sistem baru yang ditemukannya. (Saya memiliki file konfigurasi yang akan diuraikan untuk dilewati sistem.) Setiap sistem baru memiliki direktori cadangan yang dibuat untuknya dan file konfigurasi cadangan ditempatkan di dalamnya. Pengguna dapat memodifikasi file ini dan mendaftar direktori mana saja yang perlu didukung. Mereka juga dapat menentukan waktu cadangan mereka sehingga tidak akan terjadi ketika mereka berada di kantor. Saya menjalankan skrip ini di server setiap 5 menit, karena tidak memerlukan waktu pemrosesan dan saya suka fitur keamanan untuk memberi tahu saya ketika sistem baru dicolokkan ke jaringan.

Skrip lain akan mem-parsing semua file konfigurasi pencadangan individu dan menjadwalkan tugas untuk menjalankan pencadangan pada sistem itu. Ini dijalankan setiap hari pukul 12:01 pagi.

Akhirnya skrip cadangan akan mem-parsing file konfigurasi yang diteruskan oleh penjadwal dan menggunakan robocopy akan menyalin semua file. Saya mengalami kesalahan penuh saat memeriksa file konfigurasi karena pengguna akan mengeditnya, dan saya akan menerima email tentang masalah apa pun.

Pengguna dapat membaca file cadangan mereka, tetapi tidak dapat menghapus cadangan. Ini memberikan beberapa perlindungan dari kerusakan dari kemungkinan karyawan yang tidak puas.

Mungkin sesuatu yang jauh lebih elegan bisa dibuat dalam .vbs atau PowerShell, tapi saya bukan benar-benar seorang programmer. Kelas pemrograman saya termasuk Cobal dan JCL. Saya ingat saya menyalin skrip ketika saya pergi, tetapi siapa yang tahu di mana mereka sekarang.

Kevin
sumber
1

Saya mengatasi masalah dengan mengubah opsi "Jalankan Apakah pengguna masuk atau tidak" menjadi "Jalankan hanya ketika pengguna masuk". Coba ini dapat membantu Anda.

pengguna731960
sumber
1
echo Get-Date >> c:\mount_nfs_log.txt
net use X: \\share\folder password /user:domain\user>> c:\mount_nfs_log.txt 2>&1

Membuat skrip powershell ini, menjadwalkan pekerjaan sebagai SISTEM dan mengaturnya agar dijalankan saat reboot memungkinkan saya untuk menggunakan huruf drive dalam skrip saya karena UNC bukan pilihan karena sakit kepala dari masalah lain.

Ryan McGrath
sumber
Ini memperbaiki masalah bagi saya! meminta perintah ini untuk masuk dengan autentikasi untuk dieksekusi sebelum skrip melakukan keajaiban! Ini mengatasi sakit kepala karena harus "mencerminkan akun pengguna" dengan sesuatu yang kuat.
Tschallacka
1
Pertama kali saya membantu seseorang di stack overflow, senang saya bisa membantu. Juga, gunakan "gema Get-Date" alih-alih apa yang saya miliki sebelumnya.
Ryan McGrath
Saya tidak perlu login, jadi saya hanya menambahkan cmd /c net useentri pekerjaan sebelum entri pekerjaan salin dalam tugas dan itu memperbaiki masalah saya. Pos Anda adalah yang pertama setelah empat jam menemukan akun cermin yang disarankan yang memberikan solusi mudah. Pertahankan kerja bagus!
Tschallacka
Anda masih mempertahankan jalur UNC dengan skrip ini sehingga Anda tahu. Hanya karena Anda menetapkan huruf drive ke jalur UNC dan kemudian merujuk ke huruf drive itu, Anda masih harus mempertahankan \\ServerName\ShareNamelogika semacam ini. Selain itu, ini tidak harus berupa PowerShell karena NET USEberjalan melalui batch juga dan sejauh penjadwalan dengan Penjadwal Tugas sebagai akun SISTEM, Anda dapat melakukannya terlepas dari apa jenis skrip, logika, dll. Anda menjadwalkan untuk dijalankan melalui Tugas Penjadwal.
Pimp Juice,
Selanjutnya hanya untuk memperjelas, harap dicatat Anda juga bisa menggunakan NET USE \\<ServerName>\<ShareName> <password> /user:<domain>\<username>begitu saja dan tidak harus menentukan huruf drive sama sekali jika otentikasi sendiri untuk berbagi adalah apa yang dibutuhkan daripada huruf drive yang sebenarnya.
Pimp Juice,
0

Coba ubah lokasi "mulai di" menjadi "c: \". Ini sepertinya memperbaikinya bagi saya jadi mungkin sistem mencegah cmd.exe dari mengeksekusi dari \ windows \ system32 \ default sebagai fitur keamanan.

pengguna364486
sumber
0

Saya mengalami masalah yang sama ketika mencoba mengakses r: /xxxfilename.txt dengan drive yang dipetakan windows r: \ server \ share ketika memanggil skrip dari penjadwal tugas windows.

Saya memecahkan menggunakan //server/share/xxxfilename.txt
Harap perhatikan garis miring dikonversi menjadi garis miring.
Sekarang skrip bash cygwin saya berjalan di windows task scheduler dan cygwin shell.
Catatan: perintah " net use " dapat mengakses drive peta di shell tetapi menunjukkan Tidak Tersedia R: ketika saya menjalankan perintah ini di Penjadwal tugas Windows.

ijimenez123
sumber
Selamat Datang di Pengguna Super! Silakan baca pertanyaan itu lagi dengan seksama. Jawaban Anda tidak menjawab pertanyaan awal. OP tidak menyebutkan menggunakan Cygwin atau bash.
DavidPostill
0

Seperti yang dicatat oleh pengguna lain, mengatur opsi untuk "Menjalankan Apakah pengguna masuk atau tidak" ke "Menjalankan hanya ketika pengguna masuk" tampaknya bekerja. Anda kemudian dapat menggunakan jalur yang dipetakan (mis. Z :) atau jalur server (mis. \\ ServerName \ Path).

Tentu saja, jika Anda menggunakan opsi ini, maka Anda harus melakukan seperti yang dikatakan dan memastikan bahwa Anda telah masuk ke server sebagai pengguna dengan akses ke drive yang relevan. Saya ingat berada di perusahaan yang lebih tua dengan sejumlah pengaturan pekerjaan seperti ini. Suatu hari seseorang "keluar" dari server pekerjaan utama, tidak berharap bahwa itu akan memiliki dampak apa pun karena mereka tidak mematikan mesin dengan cara apa pun ...

Juga, akhir-akhir ini, Windows suka melakukan banyak reboot sistem secara otomatis. Jadi gunakan solusi ini dengan risiko Anda sendiri.

Chris Matthews
sumber
0

Juga perhatikan bahwa jika Anda membuat pemetaan dalam skrip dan kata sandi berisi% maka harus ditulis %% agar skrip bekerja dari penjadwal tugas tetapi% untuk bekerja dari commandprompt

Tom Arleth
sumber
0

seseorang dapat menggunakan perintah berikut, untuk ditambahkan dalam skrip batch itu sendiri, untuk menjalankan skrip Batch dari tugas jadwal windows untuk mendapatkan dir, file disalin ke sistem lokal menggunakan tugas jadwal Windows; penggunaan bersih Y: "\\ xxx \ xxx \ xxx cd / d Y: pengguna bersih / d Y: / Y

AshishS1
sumber
-2

Terima kasih, saya pikir bahwa menggunakan "mulai di c: \" memecahkan masalah saya, saya akan melacak masalah ini untuk mengkonfirmasi diselesaikan.

Saya mengalami masalah yang sama, jika saya mengklik langsung pada batch itu berjalan dengan sempurna tetapi tidak di bawah tugas yang dijadwalkan.

pengguna3062834
sumber
Ini tidak menjawab pertanyaan penulis. Tolong jangan tinggalkan komentar sebagai jawaban.
Ramhound
Tolong jangan tambahkan "terima kasih" sebagai jawaban. Investasikan waktu dalam situs ini dan Anda akan memperoleh hak istimewa yang cukup untuk meningkatkan jawaban yang Anda sukai, yang merupakan cara Pengguna Super mengucapkan terima kasih.
DavidPostill