Script lässt sich nur teilweise remote ausführen
Hallo,
Ich habe ein Script erstellt, welches auf einem Citrix Server eine neue Softwareversion installiert, die alte Version löscht, die neue Version in Citrix published und ein Lizenzfile in das Installationsverzeichnis kopiert. Das funktioniert auf dem Server selbst auch super (Server 2).
Nun muss ich das Script aber von einem Anderen Server aus starten.
Aslo Server 1 startet ein Script, was das Citrix-Script auf Server 2 ausführt . Das mache ich mittels PSExec:
nun wird das Script auf Server 2 ausgeführt bis an die Stelle, wo per Powershell die WorkingDirectory der alten Version abgefragt wird:
Da bekomme ich dann auf Server 1 folgende Meldung angezeigt:
Nun bin ich ratlos. Ich führe das Script von Server 1 mit dem Domänen Admin aus. Das Citrix Powershell Modul wird iM Script auf Server 2 gealden.
Wie gesagt. Wenn ich das Script direkt lokal auf Server 2 ausführe , wird es ohne Fehler ausgeführt. Lediglich, wenn ich es in einem anderen Script auf Server 1 trigger, kommt dieser Fehler und die letzten 2 Steps werden nicht ausgeführt.
Ich habe ein Script erstellt, welches auf einem Citrix Server eine neue Softwareversion installiert, die alte Version löscht, die neue Version in Citrix published und ein Lizenzfile in das Installationsverzeichnis kopiert. Das funktioniert auf dem Server selbst auch super (Server 2).
Nun muss ich das Script aber von einem Anderen Server aus starten.
Aslo Server 1 startet ein Script, was das Citrix-Script auf Server 2 ausführt . Das mache ich mittels PSExec:
$adminUsername='domäne\Administrator'
$plaintextPassword='adminpwd'
$encryptedPassword=ConvertTo-securestring $plaintextPassword -AsPlainText -Force
$adminCredential=New-Object -TypeName System.Management.Automation.PSCredential -Args $adminUsername,$encryptedPassword
$computers = 'IP1','IP2'
$customer = 'Kunde1'
$stage = 'Test'
# Script auf Remote-PC ausführen (mit psexec)
foreach($computer in $computers) {
Write-host "Starte Skript auf PC $computer" -ForegroundColor Green
$command = "$PSScriptRoot\PsExec.exe"
$scriptpath ="D:\powershell_tools\update_wizard_Citrix_client_silent.ps1"
#$arguments = "-wait -ArgumentList"
& $command "\\$computer" -u "$adminUsername" -p $plaintextPassword -s -i "powershell" $scriptpath "-new__version $new_version -customer $customer -stage $stage"
}
nun wird das Script auf Server 2 ausgeführt bis an die Stelle, wo per Powershell die WorkingDirectory der alten Version abgefragt wird:
$old_version = [regex]::match((Get-BrokerApplication -CommandLineExecutable "$install_path\$stage\*").WorkingDirectory,'\d+\.\d+\.\d+(\.\d+)?(\.\d+)?').Value
Da bekomme ich dann auf Server 1 folgende Meldung angezeigt:
Get-BrokerApplication : Insufficient administrative privilege
In D:\powershell_tools\update_wizard_Citrix_client_silen
t.ps1:107 Zeichen:35
+ ... ex]::match((Get-BrokerApplication -CommandLineExecutable "$_install ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Get-BrokerApplication], S
start-process
dkOperationException
+ FullyQualifiedErrorId : Citrix.XDPowerShell.Broker.AccessDenied,Citrix.B
powershell
roker.Admin.SDK.GetBrokerApplicationCommand
Nun bin ich ratlos. Ich führe das Script von Server 1 mit dem Domänen Admin aus. Das Citrix Powershell Modul wird iM Script auf Server 2 gealden.
Wie gesagt. Wenn ich das Script direkt lokal auf Server 2 ausführe , wird es ohne Fehler ausgeführt. Lediglich, wenn ich es in einem anderen Script auf Server 1 trigger, kommt dieser Fehler und die letzten 2 Steps werden nicht ausgeführt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93672656656
Url: https://administrator.de/contentid/93672656656
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
17 Kommentare
Neuester Kommentar
Moin,
Direkt helfen kann ich dir (vermutlich) nicht, aber versuchst du, den Citrix-Client (= WorkspaceApp) zu aktualisieren?
Wenn das der Fall ist: da hat Citrix doch selbst eine BatchFile im Portfolio. Einfach den Citrix-Server Neustarten und die Installation via GPO erledigen lassen…
Am Rande:
Ich hoffe inständig, dass das oben genannte Script nirgends abgespeichert ist.
Wenn du wirklich den User und das Password im Klartext im Script hast, ist das für einen pöhsen Purschen gefundenes Fressen und er dreht dir das AD komplett auf links (nachdem er alle Daten unbemerkt abgezogen hat)…
Direkt helfen kann ich dir (vermutlich) nicht, aber versuchst du, den Citrix-Client (= WorkspaceApp) zu aktualisieren?
Wenn das der Fall ist: da hat Citrix doch selbst eine BatchFile im Portfolio. Einfach den Citrix-Server Neustarten und die Installation via GPO erledigen lassen…
Am Rande:
Ich hoffe inständig, dass das oben genannte Script nirgends abgespeichert ist.
Wenn du wirklich den User und das Password im Klartext im Script hast, ist das für einen pöhsen Purschen gefundenes Fressen und er dreht dir das AD komplett auf links (nachdem er alle Daten unbemerkt abgezogen hat)…
Zitat von @MarciMarc85:
Wie gesagt. Wenn ich das Script direkt lokal auf Server 2 ausführe , wird es ohne Fehler ausgeführt. Lediglich, wenn ich es in einem anderen Script auf Server 1 trigger, kommt dieser Fehler und die letzten 2 Steps werden nicht ausgeführt.
Das dürfte damit Zusammenhängen, wie der Befehl auf dem Remotesystem ausgeführt wird.
Dies ist recht anschaulich unter PsExec Explainer by Mark Russinovich dargelegt.
Zitat von @em-pie:
Direkt helfen kann ich dir (vermutlich) nicht, aber versuchst du, den Citrix-Client (= WorkspaceApp) zu aktualisieren?
Wenn das der Fall ist: da hat Citrix doch selbst eine BatchFile im Portfolio. Einfach den Citrix-Server Neustarten und die Installation via GPO erledigen lassen…
Wenn das der Fall ist: da hat Citrix doch selbst eine BatchFile im Portfolio. Einfach den Citrix-Server Neustarten und die Installation via GPO erledigen lassen…
Wenn tatsächlich kein Provisioning eingesetzt wird, sind diese Prozesse (manuell/automatisch) in der Dokumentation der Workspace app ausführlich beschrieben (Install and uninstall, Update).
Ist das typische double hop Problem, kommt hier gefühlt jeden zweiten Tag
Usw.
p s. Powershell hat eingebautes Remoting, da braucht es auch kein psexec => Invoke-Command
Aber so ne Frickelei ... Habt ihr kein vernünftiges Patchmanagement?
- https://www.computerweekly.com/de/ratgeber/Mit-PowerShell-das-zweite-Hop ...
- https://www.techtarget.com/searchwindowsserver/tutorial/How-to-avoid-the ...
- https://learn.microsoft.com/de-de/powershell/scripting/learn/remoting/ps ...
Usw.
p s. Powershell hat eingebautes Remoting, da braucht es auch kein psexec => Invoke-Command
Ich brauche aber ein Trigger vom Application Server, der das Script remote startet
Für sowas nutzt man der Einfachheit halber einen Tasktrigger im Task-Scheduler der auf ein Event wartet und dann das Skript ausführt, dann brauchst du nur noch Write-Eventlog zum antriggern des Skriptes.Aber so ne Frickelei ... Habt ihr kein vernünftiges Patchmanagement?
Moin,
aktualisiert ihr den „dazugehörigen Server“ manuell oder geschieht dies auch (halb)automatisiert?
Falls ersteres, dann euer Script einfach per
https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/ru ...
aktualisiert ihr den „dazugehörigen Server“ manuell oder geschieht dies auch (halb)automatisiert?
Falls ersteres, dann euer Script einfach per
Invoke-Command()
ausführen.https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/ru ...
Wieso machst Du das nicht direkt mittels Powershell eingebauter Funktionen New-PSSession und anschließend mit Invoke-Command?
steht ja schon in der fehlermeldung , du gibst dem "-Argumentlist" keine parameter mit. Das gehört aber auch nicht in den scriptblock sondern dahinter (ist ein argument für invoke-command).
Würd empfehlen dir das hier mal durchzulesen https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
alternativ lass es dir einfach von chatgpt etc schreiben.
Abgesehen davon: domain-admin credentials benutzt man niemals für sowas und legt sie erst recht nicht ( siehe dein erstes script) plaintext (!) in irgend nem script ab.
Würd empfehlen dir das hier mal durchzulesen https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
alternativ lass es dir einfach von chatgpt etc schreiben.
Abgesehen davon: domain-admin credentials benutzt man niemals für sowas und legt sie erst recht nicht ( siehe dein erstes script) plaintext (!) in irgend nem script ab.
Steht doch schon oben in meinem Post warum es zum Fehler kommt (Stichwort double hop), lesen hilft !
ich führe aber von Server 1 ein Script auf Server 2 aus, welches ein weiteres Script auf Server 2 startet.
Nein der Aufruf des CMDLet Get-BrokerApplication ist bereits ein DoubleHop weil der eine Remote-Abfrage startet, und da die CredentialDelegation hier nicht zugelassen wird schlägt der Aufruf wegen zu wenig Rechten fehlt!!
Ich verstehe immer noch nicht, wieso du mit PSEXEC etc. arbeitest, wo doch die Powershell selbst alles Remote ausführen kann.
Enter-PSSession ServerXX
oder
Invoke-Command -ComputerName ServerXX
Befasse dich doch besser damit.
https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/ru ...
Enter-PSSession ServerXX
oder
Invoke-Command -ComputerName ServerXX
Befasse dich doch besser damit.
https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/ru ...
Tja du liest unsere Posts einfach nicht aufmerksam genug ....haben wir dir schon x mal gezeigt. Genau das steht nämlich in den Antworten zu deinem Beitrag hier ...
Mehrere Parameter an zweites Powershell Script übergeben
Aufmerksamkeitsspanne erhöhen!
Mehrere Parameter an zweites Powershell Script übergeben
Aufmerksamkeitsspanne erhöhen!