mte
Beiträge: 21 Registriert: 03 Mai 2019, 10:06
Beitrag
von mte » 22 Nov 2019, 11:35
Moinsen,
will mir per Powershell-Call und WINST aus dem AD die Computerbeschreibung auslesen.
Irgendwie scheitere ich aber dran, dass per WINST-Powershell-Call die Authentifizierung im AD flöten geht. Wäre jetzt davon ausgegangen, dass die Skripts als NT-Authrität\System ausgeführt werden, also mit dem AD-Maschinenkonto..
Unter welchem Scope läuft das ganze?
Hier der Code
Code: Alles auswählen
[DosInAnIcon_Posh]
powershell "Get-ADComputer $env:COMPUTERNAME -Properties 'Description' | Select-Object -Expandproperty 'Description'"
Und die Debug-Ausgabe
Code: Alles auswählen
(386) [5] [Nov 22 11:30:14:228] [business-config] Execution of: DosInAnIcon_Posh
(387) [7] [Nov 22 11:30:14:229] [business-config] Save to file with encoding: system
(394) [7] [Nov 22 11:30:14:230] [business-config] Start including tail of LogFile "c:\opsi.org\tmp\_opsiscript_Tb64Wd42.cmd with encoding: cp1252"
(395) [7] [Nov 22 11:30:14:230] [business-config] ################################################################
(396) [7] [Nov 22 11:30:14:230] [business-config] ==>: powershell "Get-ADComputer $env:COMPUTERNAME -Properties 'Description' | Select-Object -Expandproperty 'Description'"
(397) [7] [Nov 22 11:30:14:231] [business-config] ################################################################
(398) [7] [Nov 22 11:30:14:231] [business-config] End including LogFile "c:\opsi.org\tmp\_opsiscript_Tb64Wd42.cmd"
(404) [7] [Nov 22 11:30:14:231] [business-config] Executing "cmd.exe" /C c:\opsi.org\tmp\_opsiscript_Tb64Wd42.cmd
(405) [6] [Nov 22 11:30:18:457] [business-config] ExitCode 1
(406) [7] [Nov 22 11:30:18:457] [business-config]
(407) [7] [Nov 22 11:30:18:457] [business-config] output:
(408) [7] [Nov 22 11:30:18:457] [business-config] --------------
(409) [7] [Nov 22 11:30:18:457] [business-config]
(410) [7] [Nov 22 11:30:18:457] [business-config] C:\Windows\system32>powershell "Get-ADComputer $env:COMPUTERNAME -Properties 'Description' | Select-Object -Expandproperty 'Description'"
(411) [7] [Nov 22 11:30:18:457] [business-config] Get-ADComputer : Der Server hat die Clientanmeldeinformationen zurückgewiesen.
(412) [7] [Nov 22 11:30:18:458] [business-config] In Zeile:1 Zeichen:1
(413) [7] [Nov 22 11:30:18:458] [business-config] + Get-ADComputer $env:COMPUTERNAME -Properties 'Description' | Select-O ...
(414) [7] [Nov 22 11:30:18:458] [business-config] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(415) [7] [Nov 22 11:30:18:458] [business-config] + CategoryInfo : Sicherheitsfehler: (XXXXXXXX:ADComputer) [Get-ADComputer], AuthenticationException
(416) [7] [Nov 22 11:30:18:458] [business-config] + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.Security.Authentication.AuthenticationException,Microsoft.A
(417) [7] [Nov 22 11:30:18:458] [business-config] ctiveDirectory.Management.Commands.GetADComputer
RobWo
Beiträge: 8 Registriert: 30 Aug 2019, 08:58
Beitrag
von RobWo » 25 Nov 2019, 15:13
Hab es mal getestet:
Code: Alles auswählen
(136) [7] [Nov 25 15:40:56:287] [test-powershell] nt-autorität\system
Vielleicht reicht es aus, wenn du der Gruppe "Domänencomputer" im Rootverzeichnis deines ADs Leseberechtigungen gibst. (Unter dem Reiter Sicherheit)
So könntest du über Umwege andere Credentials zur Ausführung von Skripten verwenden:
Code: Alles auswählen
$user = "domain.com\username01"
$password = "password_stronk" --- #man kann natürlich auch eine Variable von OPSI einpflegen
$sicherpw = $password | ConvertTo-SecureString -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $user, $sicherpw
Start-Process powershell.exe -Credential $credentials -NoNewWindow -ArgumentList "-noexit -command FooBar"
Wenn du die Ausgabe in einer Variable haben willst, dann mach es vielleicht so:
Code: Alles auswählen
DefStringList $output$
Set $output$ = powershellCall('$user = "domain.com\username01";$password = "password_stronk";$sicherpw = $password | ConvertTo-SecureString -AsPlainText -Force; $credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $user, $sicherpw; Start-Process powershell.exe -Credential $credentials -NoNewWindow -ArgumentList "-noexit -command Get-ADComputer $env:COMPUTERNAME -Properties 'Description' | Select-Object -Expandproperty 'Description" ')
mte
Beiträge: 21 Registriert: 03 Mai 2019, 10:06
Beitrag
von mte » 26 Nov 2019, 09:57
Das tolle ist ja, wenn ich den Befehl als nt-authorität\system (hochgestuft per psexec -s -i cmd.exe) ausführe, funktionierts auch - nur nicht per winst...???
Anderer User ist leider keine wirkliche Alternative (da 30 Tage Kennwortablauf und keine User bei denen das nicht der Fall ist)....
RobWo
Beiträge: 8 Registriert: 30 Aug 2019, 08:58
Beitrag
von RobWo » 26 Nov 2019, 10:19
mte hat geschrieben: Das tolle ist ja, wenn ich den Befehl als nt-authorität\system (hochgestuft per psexec -s -i cmd.exe) ausführe, funktionierts auch - nur nicht per winst...???
Mhh, komisch.
Anderer User ist leider keine wirkliche Alternative (da 30 Tage Kennwortablauf und keine User bei denen das nicht der Fall ist)....
Erstelle doch ein User, bei dem das Kennwort nicht abläuft, der sich aber nicht interaktiv anmelden kann - sogesehen ein Servicekonto im AD. Mache ich auch so mit vielen Diensten.
mte
Beiträge: 21 Registriert: 03 Mai 2019, 10:06
Beitrag
von mte » 26 Nov 2019, 11:38
RobWo hat geschrieben:
Erstelle doch ein User, bei dem das Kennwort nicht abläuft, der sich aber nicht interaktiv anmelden kann - sogesehen ein Servicekonto im AD. Mache ich auch so mit vielen Diensten.
Ist leider nicht möglich, sieht unser Dienstleister nicht vor (kann im AD nur rudimentär steuern).
Werde mir jetzt wohl mit einem Powershell-Script beim Computerstart helfen, was den Namen aus dem AD ausliest (da läufts) und danach per JSON-API ins Backend schreibt...blöd...
wolfbardo
uib-Team
Beiträge: 1354 Registriert: 01 Jul 2008, 12:10
Beitrag
von wolfbardo » 27 Nov 2019, 14:14
mte hat geschrieben: Moinsen,
will mir per Powershell-Call und WINST aus dem AD die Computerbeschreibung auslesen.
Workaround:
Computerbeschreibung landet doch auf dem Client in
[HKLM\SYSTEM\ControlSet001\services\LanmanServer\Parameters] srvcomment")
???
Gruss
Bardo Wolf
OPSICONF 2024
https://opsi.org/en/opsiconf/
Basisworkshop Mainz :
17. - 20. 06. 2024
opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.
http://www.uib.de
mte
Beiträge: 21 Registriert: 03 Mai 2019, 10:06
Beitrag
von mte » 27 Nov 2019, 14:35
wolfbardo hat geschrieben:
Workaround:
Computerbeschreibung landet doch auf dem Client in
[HKLM\SYSTEM\ControlSet001\services\LanmanServer\Parameters] srvcomment")
Leider nicht bei uns, die Computerbeschreibung am Client selber wird über die Installationsroutinen nicht gepflegt..