Ausführen von powershellCall als Administrator

Antworten
Degan
Beiträge: 25
Registriert: 19 Dez 2022, 09:37

Ausführen von powershellCall als Administrator

Beitrag von Degan »

Hallo zusammen,

ich möchte ein Powershell Skript ausführen lassen und so wie ausschaut brauche ich hierfür höhere Rechte.
Hier ist ein Skript über das ich mittels Microsoft Deployment Tool die Office Installation anstoßen möchte.

Code: Alles auswählen

powershellCall('Start-Process -NoNewWindow -FilePath "\\opsi-server.lab.example.de\software_deploy\software\setup.exe" -ArgumentList "/configure office_standard.xml" | out-file "c:\log.txt" -Append')
Hier der Fehlerlog über den opsi config editor:

Code: Alles auswählen

(154)     [7] [2023-01-06 10:20:26.931] [opsi-template] Start-Process : Dieser Befehl kann aufgrund des folgenden Fehlers nicht ausgeführt werden: Zugriff verweigert.
(155)     [7] [2023-01-06 10:20:26.931] [opsi-template] In C:\opsi.org\tmp\_opsiscript_Nlh460cYS3.ps1:2 Zeichen:1
(156)     [7] [2023-01-06 10:20:26.931] [opsi-template] + Start-Process -NoNewWindow -FilePath "\\opsi-server.lab.example.de\so ...
(157)     [7] [2023-01-06 10:20:26.931] [opsi-template] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(158)     [7] [2023-01-06 10:20:26.931] [opsi-template]     + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
(159)     [7] [2023-01-06 10:20:26.931] [opsi-template]     + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
Wenn ich das ganze als Administrator auf einem Client direkt laufen lasse, funktioniert es.
Mit dem

Code: Alles auswählen

powershellCall(' whoami | out-file C:\log.txt')
wird mir der User nt-autorität\system angezeigt. Ich weiß nicht ob der User zu wenig Rechte dafür hat?

Wahrscheinlich gibt auch diverse andere Methoden Office installiert zu bekommen, aber ich finde den Ansatz über Powershell gar nicht so schlecht, respektive für andere Software-Produkte.
feltel
Beiträge: 218
Registriert: 09 Dez 2014, 07:22

Re: Ausführen von powershellCall als Administrator

Beitrag von feltel »

OPSI-Skripte laufen im Kontext des SYSTEM-Users. Dieser dürfte auf den Netzwerk-Share, den Du versuchst zu nutzen, keine Rechte haben. Daher meckert die Powershell auch. Du müsstest in dem Install-Skript den Share mounten, damit das klappt. O365 installieren wir bei uns hiermit. Die Installationsdateien liegen auf eine Windows 2022-Share (wo dann auch periodisch die Dateien aktualisiert werden), und von dort werden die Dateien lokal kopiert. Aus welchem Grund auch immer schlägt eine O365-Installation direkt über einen Share gestartet, fehl. Daher der Kopier-Workaround.

Code: Alles auswählen

[Actions]
requiredWinstVersion >= "4.12.4.4"
DefVar $SilentSwitch$
DefVar $setupFile$
DefVar $bitmap$
DefVar $headline$
DefVar $ExitCode$
DefVar $PasswordDeploymentHelper$
DefVar $UsernameDeploymentHelper$
DefVar $installation_source$
DefVar $installation_XMLfile$
DefVar $installation_random_localpath$

Set $PasswordDeploymentHelper$ = GetConfidentialProductProperty("password_deployment_helper", "12345")
Set $UsernameDeploymentHelper$ = GetProductProperty("username_deployment_helper", "foo")
Set $installation_source$ = GetProductProperty("installation_source", "")
Set $installation_XMLfile$ = "m365_managed_" + GetProductProperty("computer_location","verwaltung") + ".xml"
Set $installation_random_localpath$ = "%opsiTmpDir%\M365Offfice_" + RandomStrWithParameters("10","5","0","5","0")

include_append "%WinstDir%\lib\section_sub_check_exitcode.opsiinc"
Set $headline$ = getValue("name", getProductMap)
Set $bitmap$ = "_logo.png"
Set $setupFile$ = "$installation_random_localpath$\setup.exe"
Set $SilentSwitch$ = "/configure $installation_random_localpath$\$installation_XMLfile$"



ShowBitmap "%ScriptPath%\" + $bitmap$ $headline$
Message "installiere " + $headline$ + " %installingProdVersion%"

DosInAnIcon_Mount_Installsource
Files_Copy_Installer
ChangeDirectory $installation_random_localpath$
Winbatch_setup
Sub_check_exitcode
DosInAnIcon_Unmount_Installsource
Files_Delete_Installer



[Files_Copy_Installer]
copy -s $installation_source$\Office\*.* "$installation_random_localpath$\Office"
copy -s $installation_source$\setup.exe "$installation_random_localpath$"
copy -s "$installation_source$\$installation_XMLfile$" "$installation_random_localpath$"

[Files_Delete_Installer]
delete -sf "$installation_random_localpath$"

[Winbatch_setup]
$setupFile$ $SilentSwitch$

[DosInAnIcon_Mount_Installsource]
net use O: $installation_source$ /user:$UsernameDeploymentHelper$ $PasswordDeploymentHelper$ /PERSISTENT:no

[DosInAnIcon_Unmount_Installsource]
net use O: /delete
Degan
Beiträge: 25
Registriert: 19 Dez 2022, 09:37

Re: Ausführen von powershellCall als Administrator

Beitrag von Degan »

Danke, das Skript hat mir sehr geholfen und wird auch eine Grundlage für weitere Entwicklungen sein.
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: Ausführen von powershellCall als Administrator

Beitrag von Jan.Schmidt »

Hi
Degan hat geschrieben: 06 Jan 2023, 10:41
ich möchte ein Powershell Skript ausführen lassen und so wie ausschaut brauche ich hierfür höhere Rechte.
Hier ist ein Skript über das ich mittels Microsoft Deployment Tool die Office Installation anstoßen möchte.

Code: Alles auswählen

powershellCall('Start-Process -NoNewWindow -FilePath "\\opsi-server.lab.example.de\software_deploy\software\setup.exe" -ArgumentList "/configure office_standard.xml" | out-file "c:\log.txt" -Append')
Wahrscheinlich gibt auch diverse andere Methoden Office installiert zu bekommen, aber ich finde den Ansatz über Powershell gar nicht so schlecht, respektive für andere Software-Produkte.
ein Powershellscript endet mit der suffix .ps1 das, was du da machst ist ungefähr das gleiche wie ein Python Script das das da macht:

Code: Alles auswählen

import os
os.system('echo python ist toll')
und dann :
\\opsi-server.lab.example.de\software_deploy\software
zweimal im pfad Software?
Mach es richtig OPSI verteilt Software und die Software ist als Paket verschnürt und in dem Paket ist die ganze Software drin nicht nur wrapperscripte drumherum.
Kommt irgendwann das WAN Modul bei euch in Frage musst du es eh so machen.
feltel
Beiträge: 218
Registriert: 09 Dez 2014, 07:22

Re: Ausführen von powershellCall als Administrator

Beitrag von feltel »

Office/Microsoft 365 würde ich aber von einem entfernten Windows-Share aus installieren. Die Installationsquelle muss man mind. 1x im Monat updaten, damit sich die Clients im LAN das aktualisierte Office bandbreitensparend davon ziehen. Würde man auch die Installationsdateien in das OPSI-Paket packen, so müsste man das jeden Monat anfassen. Das hätte dann auch den Nachteil, das es im OPSI-Configed dann bei den Clients als zu aktualisieren angezeigt wird, obwohl die Clients sich potentiell ihr Update selbsttätig schon geholt haben. Das fällt einem dann auch potentiell auf die Füße, wenn man das OPSI-Auto-Update-Paket benutzt. Dann würde jedes mal unnötigerweise das Office neu installiert. Frisst bloß Zeit und Bandbreite.
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: Ausführen von powershellCall als Administrator

Beitrag von Jan.Schmidt »

Naja einmal im Monat ist etwas heftig nach deiner Logik würdest du ja auch regelmäßig die wim files für die OS Installation aufpusten?

Einmal alle 6 Monate tut keinem weh und wegen rotes Paket....

Es gibt zwei Tricks das zu umgehen:

a) ein sql statement (leider nicht mehr im Kopf und mein Opsi lebt immer noch nicht) wo man dem opsi sagt, rechner die paket x in version y installiert haben bekommen in der opsi db das aktuelle Pakte z untergeschoben

b) ändern der version auf neu Paket; in den opsi installieren/einbauen; ändern von Paket Version neu in Paketversion alt und redeploy in den opsi....

Man muß nur Kreatief sein Alternatief geht auch Kreahoch, nur ein Kretin sollte man nicht sein ;-)
Antworten