時間が経つにつれて、(幸いなことに)コマンドラインインストーラーほとんどの Windows GUI プログラムに対応しているため、バッチおよびオフライン コンソールのインストールを行うことができます。
しかし、時には奇妙な行動いくつかのインストーラーでは、(-?
、-help
...などを介して)使用構文を要求するときに、新しいコンソールを開く(cmd
) ウィンドウズ、構文を(素早く)表示するおよびパラメータ...そしてまた閉じる高速化するため、ユーザーは読む時間がない何でも。
例: Bitvise SSHインストーラー(体験版利用可能です。構文を次のように要求します。そのドキュメント言う:
BvSshServer-Inst.exe -?
あ新しいコマンドコンソール次のようなことを言って始まります:
This program will install Bitvise SSH Server 6.07
on the machine it is being run on.
... blah blah blah
...そして窓再び閉まるもう読む時間はありません。
この奇妙な動作は Windows 7 では見られましたが、Windows XP では見られませんでした (3 台のマシンでテスト済み)。
なぜこのようなことが起こるのでしょうか?
どうすれば解決/回避できるでしょうか?
注記:
- リモート コンソール経由でマシンにアクセスすると (SSH リモート コンソールでテスト済み)、問題なく動作します (telnet でも動作すると思いますが、テストしていません)。
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]
注2:
- 以下のコマンドでも問題は解決されません:
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
答え1
なぜこうなった?
Bitvise 以外の例は示されていませんが、UAC プロンプトの問題のようです。プログラムが必要な昇格された権限で実行されず、UAC プロンプトを表示する必要がある場合、出力は別の (新しい?) STDOUT に書き込まれます。したがって、2 番目の cmd ウィンドウと、出力ファイルへの標準テキスト リダイレクト (>) が機能しないようです。このStack Overflowの質問これを裏付けているようです。
XP で動作する理由は、UAC がないからです。同様に、Windows 7 のコマンド ラインでも、管理者特権のコマンド プロンプトを使用して同じ動作を実現できます。
走る->コマンドプロンプト-> Ctrl+ Shift+Enter
Bitvise インストーラーがある場所に移動し、オプションを使用してインストーラーを実行すると
-help
、出力は正常になります。
どうすれば解決/回避できるでしょうか?
UACプロンプトによるSTDOUTリダイレクトなしでコマンドラインからそのようなプログラムを実行するための解決策については、上記の質問の最後のコメントが手がかりを提供し、エレベーションパワートイこれを達成するために。
ファイルをダウンロードするにはここ(Elevation PowerToys ページの上部にリンクされています)。これは実際にはアーカイブなので、ダブルクリックしてファイルを好きな場所に抽出します (フォルダーをお勧めします)。
ファイルを抽出したら、elevate.cmd と elevate.vbs をコピーして、便利な場所 (同じディレクトリ内) に配置します。
作成するバッチファイル、elevate.cmd への適切なパスを必ず考慮してください。これにより、UAC プロンプトは表示されますが、Bitvise の場合は表示されず、これが大きな違いになります。
@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: %*
これらのおもちゃのいくつかをインストールする基本的な手順は次のとおりですここ。