Έχω ένα αρχείο δέσμης που ονομάζεται test.bat
. Καλώ τις παρακάτω οδηγίες στο αρχείο test.bat
:
start /min powershell.exe %sysdrive%\testScripts\testscript1.ps1
Όταν το τρέχω αυτό μέσω της γραμμής εντολών, το testscript μου εκτελείται με επιτυχία. Θέλω να το τρέξω ως διαχειριστής (σαν να έχω δημιουργήσει μια συντόμευση στην επιφάνεια εργασίας και να το τρέξω ως διαχειριστής. Δεν θα πρέπει να ζητάει κανένα όνομα χρήστη ή κωδικό πρόσβασης).
Δοκίμασα να προσθέσω τις παραμέτρους /elevate
και /NOUAC
στο παραπάνω test.bat
, αλλά χωρίς επιτυχία. Πώς μπορώ να διορθώσω αυτό το πρόβλημα;
Ξέρω πώς να το κάνω χειροκίνητα, αλλά θέλω αυτό να εκτελείται από τη γραμμή εντολών.
(Από τον Marnix Klooster): ...χωρίς τη χρήση πρόσθετων εργαλείων, όπως αυτά που προτείνονται στην απάντηση στο ερώτημα του Super User Πώς να εκτελέσετε πρόγραμμα από τη γραμμή εντολών με αυξημένα δικαιώματα].
Δοκιμάστε αυτό:
runas.exe /savecred /user:administrator "%sysdrive%\testScripts\testscript1.ps1"
Αποθηκεύει τον κωδικό πρόσβασης την πρώτη φορά και δεν ρωτάει ποτέ ξανά. Ίσως όταν αλλάξετε τον κωδικό πρόσβασης διαχειριστή να σας ζητηθεί ξανά.
Δείτε αυτό το άρθρο TechNet: τεκμηρίωση της εντολής Runas
Από μια γραμμή εντολών:
C:\> runas /user:<localmachinename>\administrator cmd
Ή, αν είστε συνδεδεμένοι σε έναν τομέα:
C:\> runas /user:<DomainName>\<AdministratorAccountName> cmd
Φαίνεται ότι το psexec -h
είναι ο τρόπος για να το κάνετε αυτό:
-h If the target system is Windows Vista or higher, has the process
run with the account's elevated token, if available.
Το οποίο... δεν φαίνεται να αναφέρεται στην ηλεκτρονική τεκμηρίωση στο Sysinternals - PsExec.
Αλλά λειτουργεί στο δικό μου μηχάνημα.