প্রশাসক এবং মানক ব্যবহারকারী হিসাবে চালানোর জন্য আদেশ সহ ব্যাচ ফাইল


9

আমি একটি ব্যাচ ফাইল লেখার চেষ্টা করছি যা একটি স্থানীয় প্রশাসক অ্যাকাউন্ট ব্যবহার করে কিছু কমান্ড চালাতে হবে (কোনও পরিষেবা শুরু / বন্ধ করুন) এবং লগ ইন করা ব্যবহারকারী (ব্যবহারকারী ডিরেক্টরি থেকে ফাইলগুলি অনুলিপি) ব্যবহার করে কিছু কমান্ড চালাতে হবে এবং আমার সমস্যা হচ্ছে। আমি নিম্নলিখিত আদেশগুলি চেষ্টা করেছি:

রুনা / সেভক্র্রেড সহ

runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""

ব্যবহার করার সময় /savecredআমাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করা হয় না। পরিবর্তে একটি কমান্ড প্রম্পট উইন্ডো সংক্ষেপে ঝলকানি এবং অদৃশ্য হয়ে যায়। এই উইন্ডোতে কী আছে তা আমি বলতে পারছি না। পরিষেবা বন্ধ হয় না।

রুনা / সেভ্রেড ছাড়া

runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""

এই কমান্ডগুলি আমাকে পাসওয়ার্ডের জন্য অনুরোধ জানায় তবে উপরের কমান্ডগুলির মতো একই আচরণ প্রদর্শন করে - একটি কমান্ড প্রম্পট উইন্ডো সংক্ষেপে পপ আপ হয় এবং পরিষেবাটি বন্ধ হয় না।

আদর্শভাবে আমি অধিবেশনটির জন্য পাসওয়ার্ডটি সংরক্ষণ করতে চাই কারণ আমাকে বিশদ সহ আরও কমান্ড চালাতে হবে।

এটি কি সম্ভব এবং যদি তাই হয় তবে আমি কী ভুল করছি?


এটিকে বন্ধ করে দেওয়ার জন্য শেষে "বিরতি" কমান্ড যুক্ত করুন
মার্টিন

আমার ব্যাচ ফাইলটির শেষে ইতিমধ্যে আমার একটি বিরতি রয়েছে তবে কমান্ডগুলি আরও একটি কমান্ড প্রম্পট প্রবর্তন করছে - আমি জানি না কীভাবে এই অদৃশ্য হওয়া বন্ধ করা যায়।
স্টুয়ার্ট লেল্যান্ড-কোলে

কোনও ফাইলে আউটপুট প্রত্যক্ষ করার চেষ্টা করুন এবং দেখুন এটি এতে কিছু প্রিন্ট করে কিনা: "রানাস / ব্যবহারকারীর: (পিসি নাম) (প্রশাসকের নাম)" নেট স্টপ service "(পরিষেবার নাম) log" ">> লগ.টেক্সট"
মার্টিন

আমাকে / সেভ্রেড বিকল্পের সাহায্যে কমান্ডটি চালাতে হবে অন্যথায় লগ ফাইলে পাসওয়ার্ডের প্রম্পট উপস্থিত হবে। আমি runas /user:(PC name)\(username) /savecred "net stop \"(service name)\"" >> log.txtকিছু চালাতে না পারলে লগ ফাইলের আউটপুট হয়।
স্টুয়ার্ট লেল্যান্ড-কোলে

রব ভ্যান ডের ওয়াউডের ব্যাচের ডিবাগিং পৃষ্ঠাটি দেখুন: robvenderwoude.com/battech_debugging.php । সবচেয়ে গুরুত্বপূর্ণ, LOGBATCH.BAT ডাউনলোড করুন এবং এটিকে চালিত করুন: LOGBATCH.BAT yourbatch.bat any_parameters_your_batch_needsএবং এটি একটি লগ ফাইল তৈরি করবে যার দ্বারা পরিচালিত প্রতিটি কমান্ড / ক্রিয়াকলাপ yourbatch.batরয়েছে, আপনি সেখানে কী দেখছেন তা আমাদের জানান।
জেএসচেজে

উত্তর:


12

আপনি আপনার স্ক্রিপ্টে নিম্নলিখিতগুলি যুক্ত করতে পারেন এবং এটি এটিকে উচ্চতর চালাতে বাধ্য করবে। কিছু ডাউনলোড করার দরকার নেই।

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

এই সমস্ত কাজটি Requesting administrative privileges...স্ক্রিনে মুছে ফেলা হয় যতক্ষণ না এটি শেষ হয়ে যায়।
মাফিন ম্যান

@ মফিন ম্যান ব্যাচ ফাইলের শেষে আপনার কমান্ডগুলি যুক্ত করুন এবং এটি তাদের উন্নতির পরে কার্যকর করবে।
15-15 এ পেলস

1
এই পদ্ধতিটি দুর্দান্ত। এটির জন্য কোনও অতিরিক্ত নির্ভরতা (psexec এর মতো) দরকার নেই।
উইলিয়াম

সেই স্ক্রিপ্টটি দিয়ে একটি অসীম লুপে
উঠলেন

0

আপনার ব্যাচের ফাইলটিকে দুটি ভাগে ভাগ করুন। আপনি যে অংশটি অ্যাডমিন সিএমডি পেস্ট হিসাবে চালাতে চান 32। আপনি যে অংশটি স্বাভাবিক সিএমডি তে চালাতে চান তা নিয়মিত ফোল্ডারে এটি আটকান এবং এখান থেকে দ্বিতীয় ব্যাচের ফাইলটিতে কল করুন যা সিস্টেম 32 রয়েছে। এই ভাবে দ্বিতীয় অংশটি সর্বদা অ্যাডমিনসিএমডি তে চলে। আমি চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করে।


0

যদি আপনি তৃতীয় পক্ষের সফ্টওয়্যারটিকে কিছু মনে করেন না, আপনি পাসওয়ার্ড রানাসপিসি হিসাবে চালানোর চেষ্টা করতে পারেন । এটি আপনার পাসওয়ার্ড একটি এনক্রিপ্ট করা ফাইলে সংরক্ষণ করবে। ব্যাচ ফাইলে পাসওয়ার্ড উন্মুক্ত করার দরকার নেই।


0

"রুনাস" কমান্ডটি আপনার কমান্ড "sudo" করবে না।

ব্যাচ ফাইল থেকে এটি করার জন্য, আপনি যে কমান্ডগুলি তৈরি করছেন সেগুলি "উন্নত" করতে হবে। এলিভেট পাওয়ারটো স্ক্রিপ্টগুলি ডাউনলোড করুন।

http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx

আপনার আদেশগুলি এই হিসাবে চালু করুন:

runas /user:(PC name)\(admin username) /savecred "elevate.cmd net stop \"(service name)\""

অথবা

runas /user:(PC name)\(admin username) /savecred "elevate sc stop \"(service name)\""

আমি নিম্নলিখিত 3 কমান্ড চেষ্টা করেছি: runas /user:$PcName\$Username /savecred "elevate.cmd sc stop \"$ServiceName\"", runas /user:$PcName\$Username /savecred "elevate.cmd net stop \"$ServiceName\"", runas /user:$PcName\$Username /savecred "elevate.cmd net stop $ServiceName"এবং তাদের প্রতিটি এই ত্রুটি ফেরৎ: RUNAS ত্রুটি: চালানোর ব্যর্থ - -2147467259 alfrescoTomcat elevate.cmd নেট স্টপ: অনির্দিষ্ট ত্রুটির
স্টুয়ার্ট লেল্যান্ড-কোল

3 লাইনের ব্যাচের ফাইল যা কমান্ডটি উন্নত করবে: github.com/kasajian/pseudo
জুমালাইফগার্ড

0

আমি যা ব্যবহার করি তা নিম্নলিখিত কোড:

::#################################################################################################################################
:: Elevate this script                                                                                                            #
::#################################################################################################################################

(
    :: Check Admin rights and create VBS Script to elevate
    >nul fsutil 2>&1 || (

        :: Very little red console
        mode con cols=80 lines=3 
        color cf

        :: Message
        title Please wait...
        echo.
        echo                         Requesting elevated shell...

        :: Create VBS script
        echo Set UAC = CreateObject^("Shell.Application"^)>"%TEMP%\elevate.vbs"
        echo UAC.ShellExecute "%~f0", "%TEMP%\elevate.vbs", "", "runas", 1 >>"%TEMP%\elevate.vbs"
        if exist "%TEMP%\elevate.vbs" start /b >nul cscript /nologo "%TEMP%\elevate.vbs" 2>&1
        exit /b
    )

    :: Delete elevation script if exist
    if exist "%~1" >nul del /f "%~1" 2>&1
)

pushd "%~dp0"

.... your code ....

popd

আপনার @ কেচো বন্ধ করে দেওয়ার পরে মন্তব্য করুন।


0

সরলীকৃত উত্তর (ব্যবহারকারী325534 যোগ করা) যদি আপনার কেবলমাত্র ইমভেটেড অ্যাক্সেস সহ কোনও ডিরেক্টরিতে কাজ শুরু করতে হয়:

@echo off

set MyWorkDir=D:\dev\

echo Requesting administrative privileges...

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd", "/C start /D %MyWorkDir% cmd", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"

0

এই কোডটি সিএমডি ব্যবহারকারীর পাসওয়ার্ড জিজ্ঞাসা করতে দেয়। ব্যবহারকারীর অবশ্যই তাদের পাসওয়ার্ড টাইপ করতে executable.batহবে এবং তারপরে প্রশাসক হিসাবে চালানো হবে

main.bat

@echo off
color 1f
Title Main
Goto start
:Start
runas /user:%username% executable.bat
pause

executable.bat

all code that runs as administrator
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.