Befehle/Installation als andere Benutzer ausführen?

Antworten
MFL
Beiträge: 1
Registriert: 12 Feb 2018, 15:41

Befehle/Installation als andere Benutzer ausführen?

Beitrag von MFL »

Hallo Community,

- ich bin neu bei OPSI -
Gibt es eine Möglichkeit ein OPSI Paket (die Actions darin) unter einem andere Benutzer auszuführen?

Beispiel:
Ich habe ein Skript, das Kopiert Schriftart-Datein in den Windows-Font Ordner und führt FontReg.exe aus. Nun funktioniert das Programm unter "nt-autorität\system" nicht (unter dem Userkontext wird ja OPSI Zeug gemacht oder?!)

Fällt euch was ein um das Problem zu umgehen? Denn unter dem Domänen Administrator funktioniert das ganze.

Danke im Voraus.

Gruß Max Lotz

Wie ich die Software manuell als "nt-autorität\system" getestet habe:
Bild

OPSI-Schnipsel:

Code: Alles auswählen

[Files_Fonts]
copy "%Scriptpath%\Fonts\*" "c:\Windows\Fonts\"

Code: Alles auswählen

[WinBatch_Fonts64]
%ScriptPath%\FontReg-64bit.exe
larsg
Beiträge: 283
Registriert: 16 Dez 2014, 18:06

Re: Befehle/Installation als andere Benutzer ausführen?

Beitrag von larsg »

psexec -u -p

dein problem ist, wie bekommst du das kennwort dahin.
entweder es gibt eine kennung ohne kennwort, oder das kennwort steht im klartext im opsiscript.
da die kennung wahrscheinlich erweiterte rechte benötigt ist beides suboptimal.

was macht fontreg.exe? nur die schriftarten installieren?
das geht via vbs, bzw. mit einer entsprechenden execwith-sektion.

Code: Alles auswählen

ExecWith_install_fonts CScript //nologo //e:vbs PASS "[Pfad zur Font-Datei bzw. zum Ordner mit Font-Dateien]"

Code: Alles auswählen

[ExecWith_install_fonts]
Option Explicit
Dim StrPath, ObjShell, ObjFSO, ObjNameSpace, ObjFolder, ObjFile, ObjFont
StrPath = WScript.Arguments(0)
Set ObjShell = CreateObject("Shell.Application")
Set ObjFSO = CreateObject("Scripting.FilesystemObject")
Set ObjNameSpace = ObjShell.Namespace(StrPath)
If ObjFSO.FolderExists(StrPath) Then
	WScript.Echo "Install font files from folder " & StrPath
	WScript.Echo " "
	Set ObjFolder = ObjFSO.GetFolder(StrPath)
	For Each ObjFile In ObjFolder.Files
		If LCase(Right(ObjFile,4)) = ".ttf" OR LCase(Right(ObjFile,4)) = ".otf" Then
			If ObjFSO.FileExists("C:\Windows\Fonts\" & ObjFile.Name) Then
				WScript.Echo "Font already installed: " & ObjFile.Name
			Else
				Set ObjFont = ObjNameSpace.ParseName(ObjFile.Name)
				ObjFont.InvokeVerb("Install")
				WScript.Echo "Installed Font: " & ObjFile.Name
				Set ObjFont = Nothing
			End If
		End If
	Next
ElseIf ObjFSO.FileExists(StrPath) Then
	WScript.Echo "Install font file " & StrPath
	WScript.Echo " "
	Set ObjFile = ObjFSO.GetFile(StrPath)
	If LCase(Right(ObjFile,4)) = ".ttf" OR LCase(Right(ObjFile,4)) = ".otf" Then
		If ObjFSO.FileExists("C:\Windows\Fonts\" & ObjFile.Name) Then
			WScript.Echo "Font already installed: " & ObjFile.Name
		Else
			Set ObjFont = ObjNameSpace.ParseName(ObjFile.Name)
			ObjFont.InvokeVerb("Install")
			WScript.Echo "Installed Font: " & ObjFile.Name
			Set ObjFont = Nothing
		End If
	End If
Else
	WScript.Echo "Source path does not exist"
End If
die schriftarten werden durch die installation automatisch nach C:\Windows\Fonts kopiert,
sprich du gibts als quelle den pfad in deinem scriptverzeichnis an.
bademeister
Beiträge: 141
Registriert: 28 Feb 2014, 10:21

Re: Befehle/Installation als andere Benutzer ausführen?

Beitrag von bademeister »

Hallo Max,

ich müsste jetzt konkret nachschauen, unter welchem User die winst Skripte ausgeführt werden.
Hinsichtlich FontReg weiß ich, dass es bei uns reibungslos mit folgenden Sub-Routinen läuft:

Code: Alles auswählen

[Files_copy_fonts]
copy "%ScriptPath%\fonts\*.ttf" "%Systemroot%\Fonts\"

[WinBatch_Fonts_Install]
%ScriptPath%\FontReg.exe
Was sagt den der instlog zu dem ausgeführten winst-Skript?

Viele Grüße,
Felix
thomas.besser
Beiträge: 455
Registriert: 09 Sep 2009, 09:40

Re: Befehle/Installation als andere Benutzer ausführen?

Beitrag von thomas.besser »

Witzig, habe die letzten Tage auch mit Schriftinstallation via OPSI experimentiert.

FontReg habe ich auch getestet, hat als lokaler Admin manuell funktioniert, via OPSI nicht.

Aber es gibt noch eine Lösungsmöglichkeit, bei der man den Namen der Schriftdatei ($FontFile$) sowie einen allgemeinen Namen ($FontName$) benötigt:

Code: Alles auswählen

[Files_copy_fonts]
copy -s "%ScriptPath%\files\$FontFile$" "%Systemroot%\Fonts"

[Registry_add_font]
openkey [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
set "$FontName$" = REG_SZ:"$FontFile$"
Antworten