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-Key: 187501

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

Printed on: April 25, 2024 at 23:04 o'clock

Member: catachan
catachan Jul 05, 2012 at 06:58:03 (UTC)
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
Member: bastla
bastla Jul 05, 2012 at 07:51:48 (UTC)
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
Member: SlainteMhath
SlainteMhath Jul 05, 2012 at 08:23:36 (UTC)
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
Member: davinci91
davinci91 Jul 05, 2012 at 09:09:42 (UTC)
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.
Member: DerWoWusste
DerWoWusste Jul 05, 2012 at 09:12:19 (UTC)
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.
Member: davinci91
davinci91 Jul 06, 2012 updated at 04:43:15 (UTC)
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
Member: DerWoWusste
DerWoWusste Jul 06, 2012 updated at 10:11:12 (UTC)
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.