davinci91
Goto Top

Anmeldescript als local admin per runas unter Windows 7

Hallo Leute,

ich beschäftige mich schon seit langer Zeit mit dem Thema
Office 2007 per Script zu verteilen.

Leider stoße ich dabei immer wieder auf Probleme. Habt Ihr
eine Idee dazu, wie ich einen registry key per Anmeldeskript
als nicht lokaler Admin hinzufügen kann?

Zwar gibt es den "runas" Befehl, der hilft mir aber nicht
unbedingt weiter, da die Anmeldung nur durch Eingabe eines
Passwort erfolgt.

Das sollte nicht Sinn der Sache sein, weil die Installation
voll automatisch, ohne jegliche Benutzerinteraktion erfolgen
soll.

Könnt Ihr mir helfen?


LG, Davinci

Content-ID: 187501

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

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

catachan
catachan 05.07.2012 um 08:58:03 Uhr
Goto Top
Hi

für das Problem direkt hab ich keine Lösung, aber ich kann dir nur raten die Registry Keys über Gruppenrichtlinien zu verteilen. Funktioniert zuverlässig und ist wesentlich einfacher zum Einrichten. Vorausgesetzt du hast ne Domäne und Clients neuer als XP Sp2

LG
bastla
bastla 05.07.2012 um 09:51:48 Uhr
Goto Top
Hallo davinci91!

Wenn sich der Key nur als Admin setzen lässt, wird das Anmeldescript wohl der falsche Ansatz sein - verwende ein Startscript, das läuft mit SYSTEM-Rechten ...

Grüße
bastla
SlainteMhath
SlainteMhath 05.07.2012 um 10:23:36 Uhr
Goto Top
Zitat von @bastla:
Wenn sich der Key nur als Admin setzen lässt, wird das Anmeldescript wohl der falsche Ansatz sein - verwende ein Startscript,
das läuft mit SYSTEM-Rechten ...
Das, oder du setzt die Reg-Keys direkt bei der Installation - dazu musst Du ledlglich die Office Installation entsprechend anpassen. Das geht mit "setup.exe /admin"

lg,
Slainte
davinci91
davinci91 05.07.2012 um 11:09:42 Uhr
Goto Top
Hallo,

Problem ist folgendes Domain ist mit Windows Server 2003.
Clients größtenteils XP = keine Probleme und ich kann direkt
ein Skript beim herunterfahren ausführen.

Bei Windows 7 sieht die Welt allerdings anders aus. Hier klappt
nur ein Anmeldeskript... warum auch immer.

Das ist der Hintergrund der gesamten Situation.
DerWoWusste
DerWoWusste 05.07.2012 um 11:12:19 Uhr
Goto Top
Moin Davinci.
Anmeldeskript passt hier nicht, vergiss das ganz schnell.

Sag mal an, was Dich daran hindert, ein Startskript zu verwenden. Wir haben Office 2010 auf Vista und 7 per Startskript problemlos verteilt.
Regkeys setzt man nachträglich per GPO/GPP bzw. administrativer Vorlage.
davinci91
davinci91 06.07.2012 aktualisiert um 06:43:15 Uhr
Goto Top
Das Skript wird einfach nicht ausgeführt unter Windows 7.

Zunächst muss der registry key erstellt werden, der die Ausführung von nicht zertifizierten Skripts erlaubt.
Das mache ich mit einem Batchskript wie folgt:

regedit /s \\w2k3-test\Public_Install\powershell.reg

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe \\w2k3-test\Public_Install\OFFICE_2007\officeinstall.ps1


Im Registrykey steht folgendes:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
"ExecutionPolicy"="Unrestricted"

/\ Dafür braucht dann logischer Weise admin Rechte, wenn man das nicht mehr Start- Herunterfahren Skript ausführen kann.

In dem Powershellskript machen wir eine Reihe von Abfragen ect. eigentlich nicht dramatisches.
Wäre nett, wenn du dir das mal anschauen könntest, bzw. mal eure Variante darlegen kannst.

Das eigentliche Skript sieht wie folgt aus:

#Installation Office 2007 Standard

#Script beenden
function beenden
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Script wird beendet" | Add-Content $datei
"" | Add-Content $datei
Exit
}

function prüfungofficeversion
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
if (Test-path $officeReg)
{
"$uhrzeit $officeVersion $architektur Bit ist installiert" | Add-content $datei
beenden
}
else
{
if(Test-path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90110407-6000-11D3-8CFE-0150048383C9}")
{
"$uhrzeit Office 2003 ist installiert" | Add-content $datei
deinstallation
}
else
{
"$uhrzeit Kein Office ist installiert" | Add-content $datei
installation
}
}
}

function deinstallation
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Deinstallation gestartet" | Add-content $datei
msiexec /uninstall "{90110407-6000-11D3-8CFE-0150048383C9}" /quiet
#Warten bis Deinstallation beendet ist
$eventlog = Get-eventlog -logname application -instanceID 11724 -source "MsiInstaller" -message "*Microsoft Office*" -newest 1 -ErrorAction SilentlyContinue
while (!($eventlog))
{
#Variable neu Einlesen, Erroraction verhindert Ausgabe eines Fehlers wenn Prozess beendet ist
$eventlog = Get-eventlog -logname application -instanceID 11724 -source "MsiInstaller" -message "*Microsoft Office*" -newest 1 -ErrorAction SilentlyContinue
$wshshell = New-object -comobject wscript.shell
$answer = $wshshell.popup("Office 2003 wird deinstalliert. Geschätze Dauer: 20 Minuten. Bitte warten.",5,"Deinstallation",0)
}
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Deinstallation beendet" | Add-content $datei
#Prüfung Office 2003
if (Test-path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90110407-6000-11D3-8CFE-0150048383C9}")
{
"$uhrzeit Fehler bei der Deinstallation von Office 2003" | Add-content $datei
#sendmail $body
beenden
}
#Deinstallation compatiblity pack
if (Test-path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-0020-0407-0000-0000000FF1CE}")
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Deinstallation Compatibility Pack gestartet" | Add-content $datei
msiexec /uninstall "{90120000-0020-0407-0000-0000000FF1CE}" /quiet
#Warten bis Deinstallation beendet ist
$eventlog = Get-eventlog -logname application -instanceID 11724 -source "MsiInstaller" -message "*Compatibility Pack*" -newest 1 -ErrorAction SilentlyContinue
while (!($eventlog))
{
#Variable neu Einlesen, Erroraction verhindert Ausgabe eines Fehlers wenn Prozess beendet ist
$eventlog = Get-eventlog -logname application -instanceID 11724 -source "MsiInstaller" -message "*Compatibility Pack*" -newest 1 -ErrorAction SilentlyContinue
$wshshell = New-object -comobject wscript.shell
$answer = $wshshell.popup("Compatibility Pack wird deinstalliert. Geschätze Dauer: 20 Minuten. Bitte warten.",5,"Deinstallation",0)
}
if (Test-path "hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-0020-0407-0000-0000000FF1CE}")
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Fehler bei der Deinstallation des Compatibility Pack" | Add-content $datei
#sendmail $body
beenden
}
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Deinstallation des Compatiblity Pack erfolgreich" | Add-content $datei
}
#starte installation Office2007
installation
}

function installation
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
#start der Installation
"$uhrzeit Installation von $officeVersion wurde gestartet und wird ausgeführt" | Add-content $datei
\\w2k3-test\Public_Install\OFFICE_2007\SETUP.exe -adminfile \\w2k3-test\Public_Install\OFFICE_2007\UPDATES\install.msp
$prozess = Get-Process Setup
prozesstest
}

function prozesstest
{
#Prüfung ob Installation noch läuft
#solange Installation läuft
$uhrzeit = Get-Date -Format "hh:mm:ss"
while ($prozess.responding)
{
#Variable neu Einlesen, Erroraction verhindert Ausgabe eines Fehlers wenn Prozess beendet ist
$prozess = Get-Process Setup -ErrorAction SilentlyContinue
$wshshell = New-object -comobject wscript.shell
$answer = $wshshell.popup("Office 2007 wird installiert. Geschätze Dauer: 20 Minuten. Bitte warten.",5,"Installation",0)
}
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit Installation von $officeVersion wurde abgeschlossen" | Add-content $datei
#Zur funktion prüfunginstall
prüfunginstall
}

function prüfunginstall
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
#prüfung ob office 2007 in Registry vorhanden
#Ist vorhanden
if (Test-path $officeReg)
{
popup
}
#nicht vorhanden
else
{
#Fehlermeldung
#sendmail $body
"$uhrzeit ERROR!!! bei $computer Registry Key nicht vorhanden" | Add-content $datei
#$wshshell = new-object -comobject wscript.shell
#$Answer = $wshshell.popup("Fehler bei der Installation!!! Wenden Sie sich an die EDV Abteilung unter der Nummer 727 oder 728!",30,"Installation Fehlgeschlagen",0)
beenden
}
}

function popup
{
$uhrzeit = Get-Date -Format "hh:mm:ss"
"$uhrzeit $officeVersion $architektur Bit wurde erfolgreich installiert auf $computer" | Add-content $datei

beenden
}

#Start des Scripts
$body = "Bei der Installation ist ein Fehler aufgereten, siehe Logdatei!"
$computer = get-content env:computername
$datum = Get-Date -UFormat "%d_%m"
$uhrzeit = Get-Date -Format "hh:mm:ss"
$datei="\\w2k3-test\Public_Install\OFFICE_2007\Logs\$computer-$datum.txt"
$officeVersion="Office 2007 Standard"

#installierte Architektur
$architektur= Get-WmiObject -class Win32_Processor | Select-Object AddressWidth
#Setzte Office 2007 Key
if (select-String -inputObject $architektur -pattern "64")
{
$officeReg="hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-002A-0000-1000-0000000FF1CE}"
$architektur="64"
}
else
{
$officeReg="hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90120000-0012-0000-0000-0000000FF1CE}"
$architektur="32"
}


#starte function prüfungofficeversion
prüfungofficeversion
DerWoWusste
DerWoWusste 06.07.2012 aktualisiert um 12:11:12 Uhr
Goto Top
Moin.

Ich verstehe weiterhin nicht, warum ein Startskript nicht laufen sollte. Du kannst doch testhalber die Ausgabe jedes Kommandos in eine Datei loggen, dann siehst Du doch, was schief läuft.
Bei uns deinstallierte das Batch-Startskript per msiexec /x *Uninstallstring* Vorgängerversionen bzw. compat. Packs. Dann wurde das Officesetup per Batch über config.xml-Dateien gesteuert, siehe http://wpkg.org/MS_Office_2010
Eine Unterscheidung nach Architektur wurde nicht betrieben und es wurde nur Office32 (wie auch von MS empfohlen) installiert.