kure88
Goto Top

UAC in PS Script de- und wieder aktivieren?

Hallo zusammen...
Ich sage dann erst mal als der neue auf Administrator.de "Tag zusammen"... ;)
Da ich momentan noch in der Ausbildung zum FiSi bin, ist mein Wissen nicht sooo weit ausgeprägt wie bei manch anderem User hier... ;)

Mein Vorhaben ist foldenges:

Ich möchte in einer Domäne mit Windows Server 2008 R2 und Win 7 Clients eine Lizenzdatei aktualiseren.

Dazu habe ich bereits ein PowerShell Script erstellt, welches alle Unterordner des Programmpfads durchsucht und die Datei dann ersetzt.

Die Problematik:
Das Script liegt zwar als Startscript in einer Richtlinie, wird aber nicht ausgeführt, da es zur Ausführung Adminrechte haben will.
Wenn ich die PowerShell mit der Option "Als Admin ausführen" starte und das Script von Hand aufrufe, klappt alles wunderbar.

Mein nächster Lösungsansatz war jetzt, die UAC mit dem Script zu deaktivieren, Dateien ersetzten, UAC wieder aktivieren.
Ist das in einem Script und vor allem ohne Neustart zwischen den Schritten so machbar??

Ich habe bereits versucht die Dateien per GPO zu ersetzen, aber auch ohne Erfolg...

Hat hier vielleicht jemand eine Idee dazu??

MfG
René

Content-ID: 188351

Url: https://administrator.de/forum/uac-in-ps-script-de-und-wieder-aktivieren-188351.html

Ausgedruckt am: 23.12.2024 um 14:12 Uhr

DerWoWusste
DerWoWusste 20.07.2012 um 10:10:25 Uhr
Goto Top
Moin.

Die UAC hat bei Startskripts nichts zu suchen - hier handelt das Systemkonto und das handelt immer elevated. Was Du erlebst hat nicht zufällig damit zu tun, dass Du Start- mit Anmeldeskripten verwechselst?
Sprich: Müsste ohne Weiteres gehen, wenn tatsächlich Startskript.
KURE88
KURE88 20.07.2012 um 10:14:55 Uhr
Goto Top
Nein, kein Loginscript... es wird auf Computerebende ausgeführt, nicht auf Benutzerebene...

Wenn ich das Script manuell starte, OHNE Admin Rechte wird der Zugriff auf die Ordner verweigert...deswegen lag mir der Verdacht mit der UAC so nahe...
DerWoWusste
DerWoWusste 20.07.2012 um 10:16:59 Uhr
Goto Top
Ok. Gib mal Dein Skript wieder und schreib dazu, was es genau machen soll. Wenn nur eine Datei ausgetauscht werden soll, kann das natürlich auch eine Batch machen.
KURE88
KURE88 20.07.2012 um 10:24:33 Uhr
Goto Top
Ich denke mal dass das Script soweit selbsterklärend ist...


#Setup basic folders
$NAVServerLicense = "<Pfad zur Lizenzdatei>"
$NAVClientFolderSource = "<Zielordner>"

#Function to change the license if it is defferent to the Server license
function ChangeLicenseFile([string] $Filename)
{
$DestinationFile = get-item $Filename
$SourceFile = get-item $NAVServerLicense

IF (!($SourceFile.LastWriteTime -eq $DestinationFile.LastWriteTime))
{
copy-item $NAVServerLicense -destination $Filename
Write-Host "$Filename exchanged"
}

}

#Create a List of all existing NAV Versions
$NAVFolderList = get-childitem $NAVClientFolderSource -filter * | Where { $_.PSisContainer -eq $true}

#Create a Subfolder List; This Represents the Existing Client Folders for each existing NAV Version
$NAVSubFolderList = $NAVFolderList | % {get-childitem $_.fullname}

#Create a List of Files in each Subfolder
$NAVFilesList = $NAVSubFolderList | % {get-childitem $_.fullname}

#Execute the ChangeLicenseFile function for all fin.flf Files.
$NAVFilesList | Where {$_.fullname -like "*fin.flf"} | % {ChangeLicenseFile($_.fullname -replace "\\","\")}
DerWoWusste
DerWoWusste 20.07.2012 um 10:31:57 Uhr
Goto Top
Ich denke mal dass das Script soweit selbsterklärend ist...
Das war nicht die Frage. Was möchtest Du mit dem Skript tun? (Was das Skript macht, kann ja etwas ganz anderes sein... face-smile )
bastla
bastla 20.07.2012 um 10:33:14 Uhr
Goto Top
Hallo KURE88 und willkommen im Forum!

Dein "<Pfad zur Lizenzdatei>" ist hoffentlich ein UNC-Pfad und bezieht sich nicht auf ein ge"map"tes Laufwerk?

Grüße
bastla
KURE88
KURE88 20.07.2012 aktualisiert um 10:41:52 Uhr
Goto Top
Also...:

Im Programmpfad sind mehrere Unterordner, in denen das eigentliche Programm mehrfach hinterlegt ist, um verschiedene Instanzen aufrufen zu können..
Das Script listet diese Unterordner auf, schaut nach der Lizenzdatei und ersetzt diese mit entsprechender Rückmeldung.


@bastla

Ja, der Pfad zur Lizenz ist ein Netzlaufwerk im lokalen Netzwerk... ( \\Servername\Freigabe\Unterordner_der_Freigabe)
Karo
Karo 20.07.2012 um 21:49:19 Uhr
Goto Top
Hoi,
Wenn ich das mit meinem halbwachen Verstand richtig verstehe, wird versucht ein unter lokalem System Account laufendes Script auf ein Netzlaufwerk zu hetzen? Das wird nicht funktionieren.
Ansonsten mal versucht das PS mittels Batch in der GPO aufzurufen:
powershell -nologo -f <path.to.psfile> -executionpolicy bypass

Bye
Karo
bastla
bastla 20.07.2012 um 21:54:15 Uhr
Goto Top
@Karo
ein unter lokalem System Account laufendes Script auf ein Netzlaufwerk zu hetzen?
Netzlaufwerk ist's ja nicht (sondern UNC-Pfad) - aber dass dem Computer die nötigen Rechte auf die Freigabe / den Ordner darunter gegeben wurden, hat KURE88 tatsächlich noch nicht berichtet ...

Grüße
bastla
KURE88
KURE88 20.07.2012 um 21:55:04 Uhr
Goto Top
Also das Script holt sich eigentlich nur die neue Lizenzdatei von dem Netzwerkpfad!
Der Rest läuft ja nach meinem Verständnis lokal!?

Aber ich werde deinen Vorschlag am Montag trotzdem einfach mal versuchen...