PowerShell-Skript: Die Befehlszeile ist zu lang

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
jlatieule
Nachrichten: 59
Anmeldung: 3. Juli 2019 - 9:18 Uhr

30. Mai 2023 – 16:48 Uhr

Guten Morgen,



Ich drehe mich im Kreis beim Versuch, ein PowerShell-Skript auszuführen. Ich kann es über die Eingabeaufforderung oder die PowerShell-Konsole ausführen, aber nicht über Wapt.
Der Rückgabewert ist eine sehr lange Zeichenkette, obwohl es eigentlich nicht so viele sein sollten.
Ich habe einen Beitrag über Blobs gesehen, aber ich verstehe nicht, wie man sie benutzt.

Können Sie mir helfen?

Hier einige Auszüge

Code: Alle auswählen

AAIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAgAD0AIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAuAFMAcABsAGkAdAAoACIAJwAiACkAWwAxAF0ACgAgACAAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAiAEMAbwBuAGYAaQBnACAAZgBpAGwAZQAgAGYAbwB1AG4AZAAgAGkAbgAgAHcAaQBuAGQAbwB3AHMAIABzAGUAcgB2AGkAYwBlACAAZgBvAGwAZABlAHIAIgAKACAAIABPAHUAdABwAHUAdABJAEQAYQBuAGQAUABXACAAJAByAHUAcwB0AGQAZQBzAGsAXwBpAGQAIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAKAH0ACgAKAFMAdABvAHAALQBQAHIAbwBjAGUAcwBzACAALQBOAGEAbQBlACAAUgB1AHMAdABEAGUAcwBrACAALQBGAG8AcgBjAGUAIAA+ACAAbgB1AGwAbAAKAFMAdABhAHIAdAAtAFMAZQByAHYAaQBjAGUAIAAtAE4AYQBtAGUAIABSAHUAcwB0AEQAZQBzAGsAIAA+ACAAbgB1AGwAbAAKACAAIAB8ACAAQwBvAG4AdgBlAHIAdABUAG8ALQBKAHMAbwBuACAA" ' returned non-zero exit status 1.
Output:La ligne de commande est trop longue.
:
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1088, in run_powershell
    result = run(cmd,
  File "C:\Program Files (x86)\wapt\waptutils.py", line 2110, in run
    raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output+return_stderr))
waptutils.CalledProcessErrorOutput: Command 'powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -OutputFormat text -EncodedCommand "JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQAgAD0AIAAiAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIgAKAAoAPAAjACAATABpAHMAdABlACAAZABlAHMAIABjAG8AbQBtAGEAbgBkAGUAcwAgAHMAaQBsAGUAbgBjAGkAZQB1AHMAZQAgADoAIABoAHQAdABwAHMAOgAvAC8AdwB3AHcALgByAGUAZABkAGkAdAAuAGMAbwBtAC8AcgAvAHIAdQBzAHQAZABlAHMAawAvAGMAbwBtAG0AZQBuAHQAcwAvAHoAcgAyAHcAdABxAC8AYQBsAGwAXwBpAG4AcwB0AGEAbABsAF8AcABhAHIAYQBtAGUAdABlAHIAcwBfAGkAXwBrAG4AbwB3AF8AYQBiAG8AdQB0AF8AcwBpAGwAZQBuAHQAaQBuAHMAdABhAGwAbAAvAAoACQAtAC0AdQBuAGkAbgBzAHQAYQBsAGwACgAJAC0ALQBhAGYAdABlAHI

Code: Alle auswählen

MAcwB3AG8AcgBkACIAKQAgAH0AKQAKACAAIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAgAD0AIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAuAFMAcABsAGkAdAAoACIAJwAiACkAWwAxAF0ACgAgACAAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAiAEMAbwBuAGYAaQBnACAAZgBpAGwAZQAgAGYAbwB1AG4AZAAgAGkAbgAgAHcAaQBuAGQAbwB3AHMAIABzAGUAcgB2AGkAYwBlACAAZgBvAGwAZABlAHIAIgAKACAAIABPAHUAdABwAHUAdABJAEQAYQBuAGQAUABXACAAJAByAHUAcwB0AGQAZQBzAGsAXwBpAGQAIAAkAHIAdQBzAHQAZABlAHMAawBfAHAAdwAKAH0ACgAKAFMAdABvAHAALQBQAHIAbwBjAGUAcwBzACAALQBOAGEAbQBlACAAUgB1AHMAdABEAGUAcwBrACAALQBGAG8AcgBjAGUAIAA+ACAAbgB1AGwAbAAKAFMAdABhAHIAdAAtAFMAZQByAHYAaQBjAGUAIAAtAE4AYQBtAGUAIABSAHUAcwB0AEQAZQBzAGsAIAA+ACAAbgB1AGwAbAAKACAAIAB8ACAAQwBvAG4AdgBlAHIAdABUAG8ALQBKAHMAbwBuACAA" ' returned non-zero exit status 1.
Output:La ligne de commande est trop longue.


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 4074, in install_wapt
    exitstatus = setup.install()
  File "C:\waptdev\ophlm-rustdesk_1.1.9_Windows_DEV\setup.py", line 47, in install
    run_powershell_from_file('WindowsAgentAIOInstall.ps1')
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1120, in run_powershell_from_file
    return run_powershell(content, output_format, **kwargs)
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1092, in run_powershell
    raise CalledProcessErrorOutput(e.returncode, cmd, e.output)
waptutils.CalledProcessErrorOutput: Command 'powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -OutputFormat text -EncodedCommand "JABQAHIAbwBnAHIAZQBzAHMAUAByAGUAZgBlAHIAZQBuAGMAZQAgAD0AIAAiAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIgAKAAoAPAAjACAATABpAHMAdABlACAAZABlAHMAIABjAG8AbQBtAGEAbgBkAGUAcwAgAHMAaQBsAGUAbgBjAGkAZQB1AHMAZQAgADoAIABoAHQAdABwAHMAOgAvAC8AdwB3AHcALgByAGUAZABkAGkAdAAuAGMAbwBtAC8AcgAvAHIAdQBzAHQAZABlAHMAawAvAGMAbwBtAG0AZQBuAHQAcwAvAHoAcgAyAHcAdABxAC8AYQBsAGwAXwBpAG4AcwB0AGEAbABsAF8AcABhAHIAYQBtAGUAdABlAHIAcwBfAGkAXwBrAG4AbwB3AF8AYQBiAG8AdQB0AF8AcwBpAGwAZQBuAHQAaQBuAHMAdABhAG
Das Skript ermöglicht die Installation des Fernwartungsclients „RustDesk“ auf unserem Server. Das Skript wurde anonymisiert

WAPT-Sektion

Code: Alle auswählen

def install():
    run_powershell_from_file('WindowsAgentAIOInstall.ps1')
Vollständiges und anonymisiertes PowerShell-Skript

Code: Alle auswählen

$ErrorActionPreference= 'silentlycontinue'
#Run as administrator and stays in the current directory
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
        Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
        Exit;
    }
}


$rustdesk_url = 'https://github.com/rustdesk/rustdesk/releases/latest'
$request = [System.Net.WebRequest]::Create($rustdesk_url)
$response = $request.GetResponse()
$realTagUrl = $response.ResponseUri.OriginalString
$rustdesk_version = $realTagUrl.split('/')[-1].Trim('v')
Write-Output("Installing Rustdesk version $rustdesk_version")

function OutputIDandPW([String]$rustdesk_id, [String]$rustdesk_pw) {
  Write-Output("######################################################")
  Write-Output("#                                                    #")
  Write-Output("# CONNECTION PARAMETERS:                             #")
  Write-Output("#                                                    #")
  Write-Output("######################################################")
  Write-Output("")
  Write-Output("  RustDesk-ID:       $rustdesk_id")
  Write-Output("  RustDesk-Password: $rustdesk_pw")
  Write-Output("")
}

If (!(Test-Path $env:Temp)) {
  New-Item -ItemType Directory -Force -Path $env:Temp > null
}

If (!(Test-Path "$env:ProgramFiles\Rustdesk\RustDesk.exe")) {

  cd $env:Temp

  If ([Environment]::Is64BitOperatingSystem) {
    $os_arch = "x64"
  } Else {
    $os_arch = "x32"
  }

  Invoke-WebRequest https://github.com/rustdesk/rustdesk/releases/download/$rustdesk_version/rustdesk-$rustdesk_version-windows_$os_arch.zip -Outfile rustdesk.zip

  Expand-Archive rustdesk.zip
  cd rustdesk
  Start-Process "rustdesk-$rustdesk_version-putes.exe" -argumentlist "--silent-install" -wait

  # Set URL Handler
  New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk" > null
  Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "(Default)" -Value "URL:RustDesk Protocol" > null
  New-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "URL Protocol" -Type STRING > null

  New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" > null
  Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" -Name "(Default)" -Value "RustDesk.exe,0" > null

  New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell" > null
  New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open" > null
  New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" > null
  $rustdesklauncher = '"' + $env:ProgramFiles + '\RustDesk\RustDeskURLLauncher.exe" %1"'
  Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" -Name "(Default)" -Value $rustdesklauncher > null

  Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force > null
  Install-Module ps2exe -Force > null

$urlhandler_ps1 = @"
  `$url_handler = `$args[0]
  `$rustdesk_id = `$url_handler -creplace '(?s)^.*\:',''
  Start-Process -FilePath '$env:ProgramFiles\RustDesk\rustdesk.exe' -ArgumentList "--connect `$rustdesk_id"
"@

  New-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null
  Set-Content "$env:ProgramFiles\RustDesk\urlhandler.ps1" $urlhandler_ps1 > null
  Invoke-Ps2Exe "$env:ProgramFiles\RustDesk\urlhandler.ps1" "$env:ProgramFiles\RustDesk\RustDeskURLLauncher.exe" > null

  # Cleanup Tempfiles
  Remove-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null
  cd $env:Temp
  Remove-Item $env:Temp\rustdesk -Recurse > null
  Remove-Item $env:Temp\rustdesk.zip > null
}

# Write config
$RustDesk2_toml = @"
rendezvous_server = 'rustdesk.mon_entreprise.com'
nat_type = 1
serial = 0

[options]
custom-rendezvous-server = 'rustdesk.mon_entreprise.com'
key =  '****='
relay-server = 'rustdesk.mon_entreprise.com'
api-server = 'https://rustdesk.mon_entreprise.com'
enable-audio = 'N'
"@

# Permettre le partage de session RDP
Set-ItemProperty -path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk' -Name 'share_rdp' -value 'true'

If (!(Test-Path $env:AppData\RustDesk\config\RustDesk2.toml)) {
  New-Item $env:AppData\RustDesk\config\RustDesk2.toml > null
}
Set-Content $env:AppData\RustDesk\config\RustDesk2.toml $RustDesk2_toml > null

If (!(Test-Path $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml)) {
  New-Item $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml > null
}
Set-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml $RustDesk2_toml > null

$random_pass = (-join ((65..90) + (97..122) | Get-Random -Count 8 | % {[char]$_}))
Start-Process "$env:ProgramFiles\RustDesk\RustDesk.exe"  -argumentlist "--password $random_pass" -wait

# Get RustDesk ID
If (!("$env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml")) {
  $rustdesk_id = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
  $rustdesk_id = $rustdesk_id.Split("'")[1]
  $rustdesk_pw = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
  $rustdesk_pw = $rustdesk_pw.Split("'")[1]
  Write-Output("Config file found in user folder")
  OutputIDandPW $rustdesk_id $rustdesk_pw
} Else {
  $rustdesk_id = (Get-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
  $rustdesk_id = $rustdesk_id.Split("'")[1]
  $rustdesk_pw = (Get-Content $env:WinDir\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
  $rustdesk_pw = $rustdesk_pw.Split("'")[1]
  Write-Output "Config file found in windows service folder"
  OutputIDandPW $rustdesk_id $rustdesk_pw
}

Stop-Process -Name RustDesk -Force > null
Start-Service -Name RustDesk > null
System- und Netzwerkadministrator bei Domitia Habitat
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1953
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

6. Juni 2023 - 09:56 Uhr

Hallo Joël,

PowerShell-Befehle werden beim Ausführen Base64-kodiert, um Probleme mit Sonderzeichen zu vermeiden (was häufig zu Schwierigkeiten führt). Das Problem ist, dass dies beim Laden einer Datei nicht geschehen sollte. In deinem Fall ist die Datei recht lang, und nach der Base64-Konvertierung und Übergabe an die Befehlszeile überschreitet sie die maximale Befehlszeilenlänge unter Windows.

Allerdings gibt es viele Zeilen in der Datei, die sich einfach und effizient durch Aufrufe von `setuphelper` ersetzen ließen. Daher kannst du die Datei in der Zwischenzeit teilen oder einen Teil davon durch Python-Code ersetzen.

Ich erstelle ein internes Ticket für dieses Problem.

Viele Grüße,

Denis
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
jlatieule
Nachrichten: 59
Anmeldung: 3. Juli 2019 - 9:18 Uhr

6. Juni 2023 – 14:55 Uhr

Danke Denis für das Feedback

. Ich interessiere mich für das von Trankil It generierte RustDesk-Paket.

Es ist ein hervorragender Ersatz für TeamViewer und AnyDesk. Es kann sowohl auf öffentlichen Servern als auch mit einem privaten RustDesk-Server verwendet werden.
Meiner Erfahrung nach ist es TeamViewer in puncto Einfachheit, geringerer Dateigröße und niedrigerer Performance deutlich überlegen.

Ich habe alle Argumente sorgfältig abgewogen und nichts übertrieben. 😁
Wann wird ein benutzerdefiniertes Paket verfügbar sein? 😇😇😇
System- und Netzwerkadministrator bei Domitia Habitat
Gesperrt