Görev Zamanlayıcı işi neden eşlenen bir ağ sürücüsüne erişemiyor?


27

Yerel dosyaları bir ağ paylaşımına yedeklemek için Robocopy'yi çalıştırmak üzere bir Görev Zamanlayıcı işim var. Ağ paylaşımına erişmek için etki alanı kimlik bilgilerini kullanmam gerekiyor, ancak yerel bilgisayar etki alanında değil ve iş yerel bir yönetici olarak çalıştırılıyor. Bu çözümAğ paylaşımının geçici olarak eşlenmesi ve eşleştirilmemesi işe yarıyor, ancak Görev Zamanlayıcı iş eylemlerine bakan herkes için şifremi düz metin halinde bırakıyor. Ağ sürücüsünü normalde yarı kalıcı olarak eşleştirmeyi tercih ederim, bu yüzden Görev Zamanlayıcı işi sadece Robocopy'yi çalıştırmalı ve uygun sürücü harfine atıfta bulunmalıdır. Ancak her zaman "Sistem belirtilen yolu bulamıyor" hatası alıyorum. Robocopy günlüğünde, bunu Görev Zamanlayıcı'dan çalıştırırken, komut yükseltilmiş bir komut isteminden iyi çalışsa bile (iş en yüksek ayrıcalıklarla çalışacak şekilde ayarlanmıştır). Ayrıca , yükseltilmiş bir komut isteminden eşlenen sürücülere erişmek için bu kayıt defterini ince ayarladığımı unutmayın .

EDIT: Netleştirmek için yerel yönetici olarak giriş yaptım, Windows Gezgini'ni yönetici olarak başlattım. Ağ paylaşımını Y harfi ile eşlerim. Komut istemini yönetici olarak başlatıp çalıştırırım.

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

İyi çalışıyor. Kullanıcının giriş yapıp yapmamasına bakılmaksızın en yüksek ayrıcalıklarla aynı komutu çalıştırmak için bir Görev Zamanlayıcı işi oluşturuyorum. Çalıştırıp bir hata alıyorum. Bir kütüğe yazıyorum ve alıyorum

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

bunu takiben

ERROR 3 (0x00000003) Creating Destination Directory Y:\temp\
The system cannot find the path specified.

Yerel yolunuzda veya ağ yolunuzda boşluklar var mı? Öyleyse, yolu başlangıcında ve sonunda çift tırnak içine alıyor musunuz?
Paz

@SunWKim Her iki yolda da boşluk yok.
Craig W

Yerelden ağa yedekleme yapmak için kullandığınız komut satırı nedir? Ne tür bir ağ paylaşımını destekliyorsunuz? Yedekleme komutunu yaptığınızda, belki de ağ paylaşımının mevcut olmadığını (bağlı değil) düşündürmesini sağlar.
Paz

Kullanıcı olarak mı çalışıyor yoksa sadece "bir yönetici" mi? Bu sizin kullanıcınızsa, sürücü kullanıcı için ısrarlı bir şekilde haritalandırılmış mı?
Nick

@ SunWKim Evet, haritalamadan sonra sürücü bağlanır. Yerel yöneticinin ağ paylaşımı hakları yoktur, bu yüzden Robocopy'yi çalıştırmadan önce farklı bir kullanıcı olarak eşlemem gerekiyor.
Craig W

Yanıtlar:


17

Haritalanmış sürücüler bir Kullanıcı Arayüzü konseptidir ve bu gibi arka plan görevlerinde kullanılamazlar. UNC üzerinden hedefe erişin ve görevin çalıştığı kullanıcının hedefe erişimi olduğundan emin olun.


Mümkün değil. Bilgisayar etki alanında değil, bu nedenle görevi etki alanı dışı bir kullanıcı olarak çalıştırmam gerekiyor, ancak yalnızca etki alanı kullanıcılarının ağ paylaşımına erişimi var.
Craig W

Bunun oyuna çok geç kaldığını biliyorum, ancak çalışmanızı etki alanı kimlik bilgilerine sahip bir ağ paylaşımı için ve daha sonra eşlenen sürücüye erişime sahip yerel yönetici olarak çalışan bir tane olmak üzere çalışmanızı 2 zamanlanmış göreve ayırmayı denediniz mi? Düzgün olmalarını sağlamak için yalnızca onları şaşırtmanız veya bir dosya muteks ya da başka bir şey kullanmanız gerekir.
Dan Csharpster

7

Benim durumumda tek yapmam gereken run with highest privilegesbayrak işaretini kaldırmaktı, ancak görevi sürücüyü haritalayan kullanıcı ile aynı kullanıcı üzerinde çalıştırıyorum.


Bu benim içindi. Mantıklı.
Tom Haws


1

Başka bir seçenek de Robocopy'nin desteklediği gibi sadece tam ağ yolunu kullanmak. yani robokopi c: \ temp \\ sunucu \ paylaşım \ temp

Veya daha iyisi, yedeği sunucunun kendisinde çalıştırın. Yalnızca yedekleme işlemi için bir etki alanı yönetici hesabı oluşturun. Parolayı, yalnızca etki alanı yöneticilerinin erişebileceği bir metin dosyasından besleyin.

Yıllar önce, ağdaki her sistem için gerekli dosyaları bu şekilde yedekleyecek .cmd komut dosyaları oluşturdum. Kullandığım tek harici program Cgywin'in Grep komutu ve bir komut istemi smtp mail sender idi.

Ağı sistemler için tarayacak bir senaryo yazdım. Tüm sistem adlarının bir metin dosyasını oluşturur ve bulduğu yeni sistemlerin e-postasıyla beni uyarır. (Sistemlerin atlaması için ayrıştırılacağı bir yapılandırma dosyasına sahiptim.) Her yeni sistem, bunun için oluşturulan bir yedekleme dizinine ve içine yerleştirilmiş bir yedekleme yapılandırma dosyasına sahipti. Kullanıcı bu dosyayı değiştirebilir ve yedeklenmesi gereken dizinleri listeleyebilir. Ayrıca yedeklerinin zamanını da belirleyebilirlerdi, böylece ofiste olduklarında olmazdı. Bu betiği sunucuda 5 dakikada bir çalıştım, işlem zaman almadı ve ağa yeni bir sistem takıldığında beni uyaran güvenlik özelliğini seviyorum.

Başka bir komut dosyası, tüm yedekleme yapılandırma dosyalarını ayrıştıracak ve bu sistemde bir yedekleme çalıştırmak için bir görev zamanlayacaktır. Bu her gün 12:01 de gerçekleştirildi.

Sonunda yedekleme betiği, programlayıcı tarafından kendisine gönderilen config dosyasını ayrıştırır ve robocopy kullanarak tüm dosyaları kopyalar. Konfigürasyon dosyaları üzerinde tam bir hata oluştu, çünkü kullanıcılar bunları düzenleyecekti ve herhangi bir sorunla ilgili e-postalar alabildim

Kullanıcılar yedekleme dosyalarını okuyabilir, ancak yedeği silemediler. Bu, olası hoşnutsuz bir çalışanın zarar görmesine karşı bir miktar koruma sağladı.

Muhtemelen çok daha zarif bir şey .vbs veya powershell'de yapılmış olabilirdi, ama ben gerçekten bir programcı değilim. Programlama derslerim Kobal ve JCL'yi içeriyordu. Ayrıldığımda senaryoları kopyaladığımı hatırlıyorum, ama şimdi nerede olduklarını kim biliyor.


1

"Kullanıcının oturum açıp açmadığını çalıştır" seçeneğini "Yalnızca kullanıcı oturum açtığında çalıştır" seçeneğini değiştirerek sorunun üstesinden geldim. Bunu size yardımcı olabilir deneyin.


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

Bu powershell betiğini oluşturma, işi SYSTEM olarak zamanlama ve yeniden başlatma sırasında çalıştırmaya ayarlama, UNC başka sorunların başını çekmesi nedeniyle bir seçenek olmadığından komut dosyalarımda sürücü harfleri kullanmamı sağladı.


Bu benim için sorunu çözdü! Bu komutun kimliğini doğrulamak için komut dosyasını çalıştırmadan önce yürütmek için kimlik doğrulama ile giriş yapmak Bu, sağlam bir şeyle "kullanıcı hesaplarını yansıtmak" zorunda kalmanın baş ağrısını çözer.
Tschallacka

1
Yığın taşması konusunda birine ilk yardım ettiğimde, yardım edebildiğim için memnunum. Ayrıca, daha önce sahip olduğumun yerine "echo Get-Date" kullanın.
Ryan McGrath

Günlüğe kaydetmeye gerek yoktu, bu yüzden görevdeki cmd /c net usekopyalama işi girişinden önce bir iş girişi ekledim ve bu sorunumu çözdü. Postanız, dört saat sonra, kolay bir çözüm sağlayan önerilen ayna hesaplarıyla karşılaştığında ilk oldu. İyi çalışmaya devam et!
Tschallacka

Hala bu komut dosyasıyla UNC yollarını tutuyorsunuz, böylece biliyorsunuz. Sırf bir UNC yoluna bir sürücü harfi atadığınız ve o sürücü harfine atıfta bulunduğunuz için, hala \\ServerName\ShareNamebu tür bir mantık içinde kalmanız gerekir . Ek olarak, bunun PowerShell olması gerekmez; çünkü NET USEtoplu iş yoluyla ve SİSTEM hesabı olarak Görev Zamanlayıcı ile zamanlama yapıldığında, ne tür komut dosyası, mantık, vb. Görev aracılığıyla çalıştırmayı planladığınızdan bağımsız olarak yapabilirsiniz Zamanlayıcı.
Pezevenk Suyu BT

Dahası, sadece netleştirmek için, lütfen NET USE \\<ServerName>\<ShareName> <password> /user:<domain>\<username>aynen böyle kullanabileceğinizi ve gerçek sürücü harfinden ziyade paylaşıma tek başına kimlik doğrulaması gerekliyse, bir sürücü harfi belirtmeniz gerekmeyeceğini unutmayın .
Pezevenk Suyu BT

0

"Başlangıç" konumunda "c: \" olarak değiştirmeyi deneyin. Bu benim için düzeltmek gibiydi, bu yüzden belki de sistem bir güvenlik özelliği olarak cmd.exe dosyasının varsayılan \ windows \ system32 \ 'den çalışmasını engelliyordu.


0

Windows görev zamanlayıcısından bir betiği çağırırken r: / serverx share pencereli r: \ server \ share pencereli r: /xxxfilename.txt dosyasına erişmeye çalışırken de aynı sorunu yaşadım . //Server/share/xxxfilename.txt

Kullanarak çözdüm
Lütfen ters eğik çizginin ileri eğik çizgiye dönüştürüldüğünü fark edin.
Şimdi benim bash cygwin betiği Windows görev zamanlayıcısı ve cygwin kabuğunda çalışıyor.
Not: " net use " komutu, harita sürücülerine kabuk içinde erişebilir ancak Kullanılamaz R: bu komutu Windows görev Zamanlayıcı'da çalıştırdığımda gösterir.


Süper Kullanıcıya Hoşgeldiniz! Lütfen soruyu tekrar dikkatlice okuyunuz. Yanıtınız yok değil orijinal soruya cevap. OP, Cygwin veya bash kullanmaktan bahsetmiyor.
DavidPostill

0

Başka bir kullanıcının belirttiği gibi, "Kullanıcının oturum açıp açmadığını Çalıştır" seçeneğinin "Yalnızca" oturum açıldığında çalıştır "seçeneğine ayarlanması işe yaramaz gibi görünüyor. Daha sonra eşlenen yolu (örn. Z :) veya sunucu yolunu kullanabilirsiniz (örn. \\ SunucuAdı \ Yol).

Tabii ki, eğer bu seçeneği kullanırsanız, söyleneni yapmalı ve ilgili sürücüye erişimi olan bir kullanıcı olarak sunucuya giriş yapmış olduğunuzdan emin olmalısınız. Bunun gibi çok sayıda işte çalışan daha eski bir şirkette olduğumu hatırlıyorum Bir gün birisi ana iş sunucusundan "çıkış yaptı", makineyi hiçbir şekilde kapatmadığı için bunun herhangi bir etkisi olacağını beklemiyorduk ...

Ayrıca, bu günlerde, Windows kendi kendine çağrılan sistemi yeniden başlatmayı çok sever Yani bu çözümü kullanmak kendi sorumluluğunuzdadır.


0

Ayrıca, eşleştirmeyi komut dosyasında yaparsanız ve parola% içeriyorsa, komut dosyasının görev denetleyicisinden çalışması için%% yazılması gerekir, ancak% komutunun commandprompt dosyasından çalışması gerekir.


0

toplu komut dosyasına kendisinin eklenmesi için aşağıdaki komutları kullanarak Windows zamanlama görevini kullanarak yerel sisteme kopyalanan dosya dir. net kullanım Y: "\\ xxx \ xxx \ xxx cd / d Y: net kullanıcı / d Y: / Y


-2

Teşekkürler, "c: \" ile başla seçeneğinin benim sorunumu çözdüğünü doğrulamak için bu sorunu izleyeceğimi düşünüyorum.

Aynı sorunu yaşıyordum, eğer doğrudan partiye tıklarsam, kusursuz bir şekilde çalıştı ancak planlanmış görevler altında değildi.


Bu yazarın sorusuna cevap vermiyor. Lütfen yorumlarınızı cevap olarak bırakmayın.
Ramhound

Lütfen cevap olarak "teşekkür" eklemeyin. Siteye biraz zaman ayırın ve beğendiğiniz yanıtları düzeltmek için yeterli ayrıcalıklara sahip olacaksınız.
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.