3

.batスクリプトに別のユーザーとして特定のタスクを実行させ、ヘッドレスで実行させたい(ユーザー入力やプロンプトは許可されていません)。.batスクリプトでこれを行う方法はありますか?PowerShellは、サポートする必要のあるすべてのWindowsオペレーティングシステムにデフォルトでインストールされていないため、使用しないように制限されていることに注意してください。

スクリプトでRUNASを検討しましたが、インタラクティブな入力が必要なようです。

Linuxでは、同等のイディオムは次のとおりです。

echo "Password" | sudo -S -u username "command"

Windows .batスクリプトに関する提案はありますか?

更新:vbscriptは常にWindowsで利用できると思います。したがって、純粋にヘッドレスのソリューションがvbscriptで利用できる場合は、それも良いことです。

4

3 に答える 3

7

別の方法を次に示します。

wmic /user:username /password:pass process call create "cmd /c \"d:\\path\\to\\program.exe\" /arg etc"

編集:明らかに、ローカル マシンで別の資格情報を使用した認証は許可されません。

vbscript で呼び出しrunas、vbscript にパスワードをコンソールに送信させて、パスワードの入力を自動化する方法があります。

set WshShell = WScript.CreateObject("Wscript.Shell")
WshShell.run "runas /noprofile /user:USERNAME " + Chr(34) + "d:\path\to\command.exe /args" + Chr(34)
WScript.Sleep 500
WshShell.SendKeys "PASSWORD"
WshShell.SendKeys "{ENTER}"
set WshShell = nothing

それをファイルに保存し、.vbs経由で呼び出しますcscript /nologo script.vbs

バッチ スクリプトから実行する必要がある場合は、クリエイティブなエコーを実行してください。

@echo off
setlocal

set username=username
set password=password
set program=d:\path\to\program.exe /arg argument

echo set WshShell = WScript.CreateObject(^"Wscript.Shell^")>runas.vbs
echo WshShell.run ^"runas /netonly /noprofile /user:%username% ^" + Chr(34) + ^"%program%^" + Chr(34)>>runas.vbs
echo WScript.Sleep 500>>runas.vbs
echo WshShell.SendKeys ^"%password%^">>runas.vbs
echo WshShell.SendKeys ^"{ENTER}^">>runas.vbs
echo set WshShell = nothing>>runas.vbs
cscript /nologo runas.vbs
del /q runas.vbs

それがうまくいかない場合は、psexecを使用して別の資格情報でプログラムを実行することもできます。

psexec -u USERNAME -p PASSWORD d:\path\to\command.exe

他に考えられる唯一の方法は、システム アカウントからスクリプトを実行するグ​​ループ ポリシー スタートアップ スクリプトを使用してスクリプトを実行することです。レジストリの から呼び出すことも考えましたHKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceが、再起動後に最初にログインしたユーザーから起動する可能性があると思います。

于 2013-02-14T00:49:42.600 に答える
0

コマンドを試してくださいrunas

runas /user:"DOMAIN\user" "C:\Program Files\path\to\program.exe" /savecred

資格情報は で保存でき、/savecred別の機会に入力する必要はありません。

http://technet.microsoft.com/en-us/library/cc771525.aspx

于 2013-02-13T20:26:39.517 に答える
-1

ルーン文字はそれを行う正しい方法です。バッチを最初に実行するときに追加/username user /savecredすると、ユーザーのパスワードが要求されて保存されるため、次回は保存されたクレデンシャルで実行されます

于 2013-02-13T20:34:14.587 に答える