none
Function als Administrator ausführen

    Allgemeine Diskussion

  • Hallo,

    ich baue gerade ein Script für Windows 7 und komm an einer Stelle nicht weiter.

    Ich habe ein Script, was ein anderes Script öffnen soll.
    Aktuell lass ich das erste Script in einem normal Benutzerkontext öffnen und in diesem Script ist ein Aufruf, womit ein anderes Script mit einer administrativen Rechten aufgerufen wird.

    Ich möchte aber, dass das Script was ich mit administrativen Rechten geöffnet wird, durch das erste erstellt wird und nach dem Ausführen wieder löschen.

    Hintergrund ist, dass ich eine exe erstellen will, da LoginDaten drin sind.

    Hier noch die Script:

    Script mit normalen Rechten (SwitchUMTS.ps1):

    $user = 'Domäne\Benutzername'
    $password = 'Passwort' | ConvertTo-SecureString -AsPlainText -Force

    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $user, $password

    If ((Test-Path "C:\UMTSKarte-Neustarten") -ne $true) { "Ordner mit File C:\UMTSKarte-Neustarten existiert nicht" | Outfile C:\Windows\Logs\Software\UMTS-Error.log } else {
    Start-Process powershell.exe -Credential $Credentials -ArgumentList "-noprofile -command &{
            Start-Process powershell.exe -verb runas -argumentlist `"C:\UMTSKarte-Neustarten\Drahtlos.ps1`"
        }"
    }

    Script mit administrativen Rechten:

    $wmi = Get-WmiObject win32_networkadapter | Where-Object { $_.netconnectionid -eq "Mobile Breitbandverbindung" }
    $wmi.disable()
    sleep 10
    $wmi.enable()
    Donnerstag, 13. April 2017 05:58

Alle Antworten

  • Hallo,

    mir stellt sich die Frage, wieso du diese Befehle in zwei verschiedenen Scripten ausführen willst. Da du sowieso eine .exe (wahrscheinlich mit dem "bat to exe" oder "ps1 to exe" converter) erstellen willst, würde ich einfach deinen PS-Code in eine einzige .ps1 Datei schreiben, diese dann über ein .cmd mit psexec ausführen, wo du deine Daten wie Benutzername und Passwort mitgeben kannst. Das .cmd kannst du mit "bat to exe converter" umwandeln, sodass das mitgegebene Klartextkennwort nicht mehr lesbar ist. Die Powershelldatei sowie die psexce.exe fügst du der zu erstellenden .exe einfach an. Im Aufruf der psexec sowie deiner .ps1 benötigst Du keinen Pfad, da alles beim Aufruf der .exe entpackt wird. Die .ps1 ist dann natürlich temporär lesbar, solange das Programm läuft. Hier ein Beispiel der .cmd:

    psexec.exe -i -u Domain\Username -p Password powershell.exe -executionpolicy bypass -file %cd%\Deine.ps1

    PS: Du kannst auch einfach mit genügend Administrativen Rechten (Domain-Account) von einem zentralen Server ein Script ausführen. Überprüfe einfach deine UMTSKarte-Neustarten Ordner über nen UNC-Pfad auf C$, den WMI-Befehl kannst du einfach remote ausführen.

    MfG, Jannik D.

    Donnerstag, 13. April 2017 07:16
  • Hallo,

    der eigentliche Hintergrund ist, dass ein normaler Benutzer dieses Script ausführen muss und dieser die Benutzerdaten für den administrativen Benutzer nicht wissen darf.

    Ich benutze nicht "bat to exe converter" o.ä. Ich benutze Powershell Studio.

    Donnerstag, 13. April 2017 11:29