Von einigen Programmen verwendete Windows-Befehlszeileninstallationsprogramme: Probleme bei der Anzeige von Syntax und Parametern

Von einigen Programmen verwendete Windows-Befehlszeileninstallationsprogramme: Probleme bei der Anzeige von Syntax und Parametern

Mit der Zeit findet man (glücklicherweise) immer häufigerBefehlszeileninstallationsprogrammefür die meisten Windows-GUI-Programme, sodass Sie Batch- und Offline-Konsoleninstallationen durchführen können.

Aber manchmal habe ich eineseltsames Verhaltenbei mehreren Installateuren bei der Abfrage (über -?, -help... etc.) ihre Verwendungssyntax: sieöffne eine neue Konsole( cmd) Fenster,Syntax anzeigen (schnell)und Parameter...und wieder schließenzu schnell, so dass der Benutzerhat keine Zeit zum Lesenirgendetwas.

Beispiel: Der Bitvise SSH-Installer (Probeversionverfügbar). Ich bitte um Syntax alsseine Dokumentesagt:

BvSshServer-Inst.exe -?

Aneue cmd-Konsolebeginnt mit Aussagen wie:

This program will install Bitvise SSH Server 6.07
on the machine it is being run on.
... blah blah blah 

... und das Fensterschließt wieder. Ich habe keine Zeit mehr, weiterzulesen.
Ich habe dieses seltsame Verhalten unter Windows 7 gesehen, aber nicht unter Windows XP (auf drei Rechnern getestet).

Warum passiert das?
Wie kann das Problem gelöst/umgangen werden?

NOTIZ:
– Beim Zugriff auf meinen Rechner über eine Remote-Konsole (getestet mit einer SSH-Remote-Konsole) läuft alles einwandfrei (ich nehme an, dass es auch über Telnet funktionieren würde, habe es aber nicht getestet):

d:\Installer\>BvSshServer-Inst.exe -? | more
This program will install Bitvise SSH Server 6.07
on the machine it is being run on.

Bitvise SSH Server is an SSH2 server for Windows 2000 or newer, including
the latest Windows 8.1 and 2012 R2. Please see www.bitvise.com/ssh-server
for more information.

This program must be run by a user with administrator privileges. If run
without command line options, installation will be performed in interactive
mode. If run with command line options without the '-interactive' option,
installation will be performed in unattended mode.

Usage:
 BvSshServer-Inst -installDir=directory OR -defaultSite OR -site=site-name
                  [-force OR -abortOnWarning[=warning-list-or-mask]
                  [-acceptEULA] [-interactive] [-noRollback]
                  [-activationCode=activation-code-hex]
                  [-keypairs=keypairs-file]
                  [-settings=settings-file]
                  [-siteTypeSettings=fileName]
                  [-startService]
                  [-startBssCtrl]

ANMERKUNG 2:
– Diese Befehle lösen das Problem auch nicht:

start "BvSshServer-Inst.exe -? | more"
cmd /k "BvSshServer-Inst.exe -? | more"
BvSshServer-Inst.exe -? | more > Syntax.txt
BvSshServer-Inst.exe -? > Syntax.txt
BvSshServer-Inst.exe -? | more 2> Syntax.txt

Antwort1

Warum passiert das?

Sie haben außer Bitvise keine anderen Beispiele genannt, aber es scheint sich um ein Problem mit der UAC-Eingabeaufforderung zu handeln. Wenn das Programm nicht mit den erforderlichen erhöhten Berechtigungen ausgeführt wird und daher eine UAC-Eingabeaufforderung anzeigen muss, wird die Ausgabe in ein anderes (neues?) STDOUT geschrieben. Daher scheint das zweite cmd-Fenster UND der Grund, warum die Standardtextumleitung in eine Ausgabedatei (>) nicht zu funktionieren scheint.Diese Stack Overflow-Fragescheint dies zu bestätigen.

Der Grund, warum es unter XP funktioniert, ist, dass es keine Benutzerkontensteuerung hat. Dasselbe Verhalten können Sie auch in Windows 7 mit einer Eingabeaufforderung mit erhöhten Rechten in der Befehlszeile erreichen:

  • Laufen->cmd.exe-> Ctrl+ Shift+Enter

  • Navigieren Sie zum Speicherort des Bitvise-Installationsprogramms und führen Sie es mit der -helpOption aus. Die Ausgabe ist normal.

Wie könnte das Problem gelöst/umgangen werden?

Was eine Lösung zum Ausführen solcher Programme über die Befehlszeile ohne STDOUT-Umleitung durch die UAC-Eingabeaufforderung für dieses Programm betrifft, geben die letzten Kommentare in der obigen Frage einen Hinweis darauf, dass Sie denElevation PowerToysum das zu erreichen.

  • Laden Sie die Datei herunter vonHier(Link oben auf der Elevation PowerToys-Seite). Dies ist eigentlich ein Archiv. Doppelklicken Sie, um die Dateien an den gewünschten Ort zu extrahieren (ich schlage einen Ordner vor!).

  • Sobald die Dateien extrahiert sind, kopieren Sie elevate.cmd und elevate.vbs und legen Sie sie an einem geeigneten Ort ab (im selben Verzeichnis).

  • Ein ... kreierenBatchdatei, und achten Sie darauf, die entsprechenden Pfade zu elevate.cmd zu berücksichtigen. Dadurch wird immer noch eine UAC-Eingabeaufforderung angezeigt, jedoch nicht für Bitvise, und das macht den entscheidenden Unterschied.

     @echo off
     setlocal enabledelayedexpansion
    
     set CmdDir=%~dp0
     set CmdDir=%CmdDir:~0,-1%
    
     :: Check for Mandatory Label\High Mandatory Level
     whoami /groups | find "S-1-16-12288" > nul
     if "%errorlevel%"=="0" (
     echo Running as elevated user.  Continuing script.
     ) else (
     echo Not running as elevated user.
     echo Relaunching Elevated: "%~dpnx0" %*
    
     if exist "%CmdDir%\elevate.cmd" (
         set ELEVATE_COMMAND="%CmdDir%\elevate.cmd"
     ) else (
         set ELEVATE_COMMAND=elevate.cmd
     )
    
     set CARET=^^
     !ELEVATE_COMMAND! cmd /k cd /d "%~dp0" !CARET!^& call "%~dpnx0" %*
     goto :EOF
     )
    
     :: Continue script here
     BvSshClient-Inst.exe -help 
     BvSshClient-Inst.exe -help > txt.txt
    
     echo Arguments passed: %*
    

Grundlegende Anweisungen zur Installation einiger dieser Spielzeuge finden SieHier.

verwandte Informationen