barry99
Goto Top

Ps1-Skript als Admin mit Credentials starten

Hallo,
ich habe das folgende Problem und brauch eure Hilfe da ich selber nicht weiter komme:

ich möchte ein ps1-Skript als Admin ausführen. Da ist jetzt nichts dran. Das funktioniert. PowerShell erkennt von selber dass es nicht als Admin gestartet wurde und startet als Admin neu.
Jetzt kommt das eigentliche Problem. Wenn es startet kommt das Windows-Fenster dass User und Passwort benötigt werden. Das ganze soll später automatisiert ablaufen, deswegen darf keine manuelle Eingabe mehr kommen.
Gibt es ein Möglichkeit im Skript den Benutzer und das PW in das Windows-Eingabe-Fenster zu übergeben?
Es muss an der stelle auch nicht verschlüsselt sein oder so. Das ganze läuft nur intern und ist allgemein bekannt deswegen kann es auch im Klartext drin stehen.
Ich bin mit meinen Nerven am Ende und erhoffe mir Hilfe von euch.

Das Skript sieht bis jetzt so aus:

$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$princ = New-Object System.Security.Principal.WindowsPrincipal($identity)
if(!$princ.IsInRole( `
  [System.Security.Principal.WindowsBuiltInRole]::Administrator))
{
  $powershell = [System.Diagnostics.Process]::GetCurrentProcess()
  $psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path
  $script = $MyInvocation.MyCommand.Path
  $prm = $script
  foreach($a in $args) {
   $prm += ' ' + $a  
 }
  $psi.Arguments = $prm
  $psi.Verb = "runas"  
  [System.Diagnostics.Process]::Start($psi) | Out-Null
  $cred = Get-Credential
  return;
} 

Danke schon jetzt für eure Hilfe!

Grüße aus Nürnberg

Content-ID: 347609

Url: https://administrator.de/contentid/347609

Ausgedruckt am: 25.11.2024 um 19:11 Uhr

133883
133883 29.08.2017 aktualisiert um 18:08:03 Uhr
Goto Top
Du musst das Skript schon mit den Admin-Credentials starten dann kommt keine Abfrage der Credentials wenn es via "runas" eleviert wird!
Alternative Credentials lassen sich immer mit
(new-Object PSCredential('username',(ConvertTo-SecureString 'Password' -AsPlainText -Force)))
direkt im Code erstellen und damit eine neue Shell mit den Credentials öffnen.

mit Cradantials starten
Für den Faux-Pas gibt's den Bearbeiten-Button!

Gruß
beidermachtvongreyscull
beidermachtvongreyscull 29.08.2017 um 17:27:17 Uhr
Goto Top
wiseolli
wiseolli 29.08.2017 um 19:32:31 Uhr
Goto Top
Hi,

Du könntest das Skript per Windowsaufgabe (Taskscheduler) starten, um die das Skript mit bestimmten Credentials laufen zu lassen und die UAC-Abfrage zu umgehen. Und so ein Task kann man auch mit einem Aufruf (z.B. per Verknüpfung) manuell starten.

Ansosten hier einige Beispiele:

Zitat von @barry99:

. . .
Gibt es ein Möglichkeit im Skript den Benutzer und das PW in das Windows-Eingabe-Fenster zu übergeben?
Es muss an der stelle auch nicht verschlüsselt sein oder so. Das ganze läuft nur intern und ist allgemein bekannt deswegen kann es auch im Klartext drin stehen.
. . .

# Beispiel um Username und Password im Skript zu speichern (Nicht empfohlen!!!)
$username = "John Doe"  
$password = "ABCDEF"  
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr


#Anderes Beispiel:

# Abfragen und speichern
read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt

# Einlesen und benutzen
$username = "domain01\admin01"  
$password = cat C:\securestring.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password

$serverNameOrIp = "192.168.1.1"  
Restart-Computer -ComputerName $serverNameOrIp `
                 -Authentication default `
                 -Credential $cred



Hoffe das hilft Dir weiter.

Gruß
Olli
barry99
barry99 30.08.2017 aktualisiert um 10:37:53 Uhr
Goto Top
Das ist eben das was nicht passieren kann, dass das PW einmalig eingegeben wird. Es muss übergeben werden face-sad

Leider geht keiner dieser Ansätze... Jedes mal kommt das Fenster wo Windows den User und PW verlangt, die Benutzerkontensteuerung halt...

Das Skript per Windowsaufgabe (Taskscheduler) starten habe ich auch schon überlegt. Ich weiß aber nicht wie ich es dort ohne einen manuellen Eingriff reinbringe und dann wieder per Skript die Aufgabe erstelle?!?!?!?

Es kam hier noch der Vorschlag, das Skript direkt mit den Admin-Credentials zu starten... Kann mir da vielleicht helfen?

Sorry noch für den Schreibfehler!
barry99
barry99 30.08.2017 um 11:55:07 Uhr
Goto Top
Mal noch eine andere Überlegung. Vielleicht klappt ja das setzen der Credentials... Muss ich noch was eingeben um diese an der entsprechenden Stelle abzurufen?
colinardo
Lösung colinardo 30.08.2017 aktualisiert um 12:23:16 Uhr
Goto Top
Servus.

Hier steht von mir wie's geht
Powershell Script mit Benutzerabfrage
Zweites Skript benutzen und das Get-Credential durch das Codesnippet von @133883 austauschen!

$cred = (new-Object PSCredential('username',(ConvertTo-SecureString 'Password' -AsPlainText -Force))) 
Und fertig ist die Laube.

Das Skript per Windowsaufgabe (Taskscheduler) starten habe ich auch schon überlegt. Ich weiß aber nicht wie ich es dort ohne einen manuellen Eingriff reinbringe und dann wieder per Skript die Aufgabe erstelle?!?!?!?
Das ist doch ein Klacks mit New-ScheduledTask

Grüße Uwe

p.s. den peinlichen Tippfehler im Titel kann man mit dem Bearbeiten-Button korrigieren!
barry99
barry99 30.08.2017 um 13:48:10 Uhr
Goto Top
Ja, ja, der Tippfehler ist beschemend ist mir schon klar, ich kann es aber nicht mehr korrigieren.

Uwe, deine Lösung in Verbindung mit dem Eintrag von @133883 funktioniert!!!

Geile Sache!
Vielen Dank für eure Hilfe!!!
colinardo
colinardo 30.08.2017 aktualisiert um 16:17:06 Uhr
Goto Top
Zitat von @barry99:
Ja, ja, der Tippfehler ist beschemend ist mir schon klar, ich kann es aber nicht mehr korrigieren.
Wieso? Sicher kannst du das korrigieren! Einfach im Ursprungsbeitrag auf "Bearbeiten" klicken und ändern. Diese zwei kleinen Änderungen sind noch erlaubt und im Rahmen der möglichen Änderungen bei beantworteten Beiträgen.
133883
133883 30.08.2017 aktualisiert um 16:25:05 Uhr
Goto Top
Zitat von @colinardo:
Zitat von @barry99:
Ja, ja, der Tippfehler ist beschemend ist mir schon klar, ich kann es aber nicht mehr korrigieren.
Wieso? Sicher kannst du das korrigieren! Einfach im Ursprungsbeitrag auf "Bearbeiten" klicken und ändern.
Wollte ich gerade sagen ...