Daha önce bu konuda yayınlanan olası çözümlerin bolluğunu denemiş olsaydım, bu ilanı göndermezdim.
Bir .vbs dosyası kullanan bir yazılım geliştirdim ( exporter.vbs ) başka bir yazılım parçasından bir .exe yürütür ( reporter.exe ), istemci makinede yüklü olan.
Vaka Senaryolarını Kullan
Çalışan exporter.vbs elle (sağ tıkla ve aç) tam olarak beklendiği gibi mükemmel çalışıyor. Kendi makinemde Görev Zamanlayıcı üzerinden kendi Windows kullanıcım olarak çalıştığımda, tam olarak beklendiği gibi çalışıyor.
Bir istemcide Windows Server 2008/2012 kutusunda çalıştırıldığında, tam olarak beklendiği gibi mükemmel bir şekilde çalışıyor. Görev Zamanlayıcı üzerinden herhangi bir kullanıcı olarak çalıştırıldığında (Yöneticiler grubu hariç), Görev Zamanlayıcı 0x0 olarak geri bildirir, ancak reporter.exe beklendiği gibi dosyaları oluşturmamış.
Bir istemcide çalıştırıldığında, Windows Server 2008/2012 kutusuyla kullanıcı olarak çalışan Görev Zamanlayıcı üzerinden Yöneticiler , çalışır, ancak bir gecede (görevimiz çalışmaya ayarlandığında) çalışmaz.
Zamanlanmış Görev Ayarı - Genel
Zamanlanmış Görev Ayarı - İşlemler
Scriptler
Yukarıdaki senaryolarda exporter.vbs Komut dosyasının diğer bölümleri çalışırken komut dosyasının bu aşamasında tetikleniyor gibi görünüyor (komut dosyasının diğer kısmı hedef XML dosyalarını boşaltıyor).
Function Export(filepath, report)
dim fso
set fso_tidy = CreateObject("Scripting.FileSystemObject")
if fso_tidy.FileExists(filepath)=true then
set fso_tidy = nothing
set oShell = CreateObject("WScript.Shell")
oShell.Run """"&simsdir&"\CommandReporter.exe"" /QUIET /user="""&simsu&""" /password="""&simsp&""" /REPORT:"""&report&" v"&rptv&""" /OUTPUT:"""&filepath&"""", 0, true
set oShell = nothing
set fso_tidy = CreateObject("Scripting.FileSystemObject")
set objFile = fso_tidy.GetFile(filepath)
if objFile.size > 64 then
size = round(objFile.size / 1024, 1)
WriteToLog "DATA", "(OK) "&report&" EXPORTED (size: "&size&"kb)"
else
WriteToLog "DATA", "(FAILED) "&report&" EXPORTED (size: "&size&"kb)"
end if
set objFile = nothing
end if
set fso_tidy = nothing
end Function
Bu fonksiyon 5 kez denir, her rapor için bir defa Yazılımdan veri vermemiz gerekir.
Ne denendi zaten
- Yazılımımın klasöründe tam kullanıcı izinleri
- İstemci sunucusunda yerel veya etki alanı düzeyinde olsun, her kullanıcı olarak çalışmayı denedi
- Cscript.exe aracını kullanarak vbs çalıştırmayı denedi
VBS, dosyaları değiştirirseniz Görev Zamanlayıcı'dan nasıl çalıştırılması gerektiğine ilişkin olarak eksik olduğum bir şey var mı?
C:\scripts\exporter.vbs
, veya sağlamakC:\Windows\System32\cscript.exe
program / script alanında veC:\scripts\exporter.vbs
bağımsız değişken alanında.