İki vb betiğini bir betiğe nasıl dahil edersiniz


-1

Bir komut dosyasında birleştirmek istediğim 2 vb komut dosyası var.

İlki gizli (görünmez pencere) bir toplu iş dosyasını çalıştırır. ikincisi ise toplu iş dosyasını farklı bir kullanıcı olarak çalıştırır. İhtiyacım olan, toplu iş dosyasını farklı bir kullanıcı olarak çalıştıran ve aynı zamanda görünmeyen bir vb komut dosyasını kullanmak.

1)

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.bat" & Chr(34), 0
Set WinScriptHost = Nothing

2)

Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "RunAs /noprofile /user:domain\domainuser ""C:\Folder\BatchFileName.bat"""
WScript.Sleep 100
oShell.Sendkeys "yourpassword~"
Wscript.Quit

herhangi bir yardım çok takdir edilir


1
Alt yordamlar hakkında okuyun ( msdn.microsoft.com/en-us/library/dz1z94ha.aspx ). Bir alt rutinin ne olduğunu bilmediğinizden, kopyaladığınız komut dosyalarını çok dikkatli bir şekilde incelemenizi öneririm.
Yorik

Merhaba, biz bir senaryo yazma servisi değiliz. Tam olarak nerede sıkışıp kalıyorsun? Araştırmanız şimdiye dek size neler gösterdi? Ne denedin zaten? (ipucu, wscript.shell Run yöntemine bakın ve nasıl çalıştığını öğrenin).
Ƭᴇcʜιᴇ007

Yanıtlar:


0

Bu betiği, başka bir kullanıcı olarak, bu betiği birleştirmenin bir yolundan daha fazlasını görmeyen bir son kullanıcı olmadan yürütmeye çalışıyorsanız.

oShell.Run "RunAs /noprofile /user:domain\domainuser ""C:\Folder\BatchFileName.bat"""
WScript.Sleep 100
oShell.Sendkeys "yourpassword~"

SendKeys, konsolun aktif bir pencere olmasına dayanır ve bu da onu son kullanıcının kullanabilmesini sağlar, böylece komut dosyası, kullanıcının araya girebileceğinden daha hızlı bir şekilde arayüze anahtar göndermeyi otomatik hale getirir. Kullanıcı bu yürütme sırasında zaten yazıyorsa, kodunuz hatalı olur ve yürütme durdurulur. Bu betiği çalıştırıp HERHANGİ bir tuşa basılı tutarsanız, düzgün çalışmasını önlersiniz. Başka bir deyişle, hayır onları birleştiremezsiniz.

Arka planda bir komut dosyasını farklı bir kullanıcı hesabı altında çalıştırmayı deniyorsanız, "% SYSTEMROOT% \ system32 \ cmd.exe / c komut dizini çalıştırmak için zamanlama hizmetini kullanın. .log "Planlama servisi, belirli bir kullanıcı olarak çalışmasını istiyorsanız, kimlik bilgilerini isteyecektir.

Son kullanıcı istediği zaman bu kullanıcıyla runas yapma olanağına sahip olacağı için runas'ın sözdizimi altında / savecred komutunu kullanamıyorum. İmha etmeniz için en güvenli ve etkili yöntem, bastırılmış UI yürütme işleminizde zamanlanmış görevler kullanmaktır.

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run "cmd.exe /c C:\Folder\BatchFileName.bat", 0
Set WinScriptHost = Nothing
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.