質問: ### 前提・実現したいこと 下記環境環境化でSCPコマンドが実行できず困っています。 PATH環境変数内容出力した際に"C:\WINDOWS\System32\OpenSSH\;"が含まれているのでパスは通ると思うのですが。。 + OS : Microsoft Windows 10 Pro [Version 10.0.17134.523] + IDE : Visual Studio Community 2017 [Version 15.9.2] + ソリューション種類 : ターゲットフレームワーク.NETCore2.1のASP.NETCoreWebアプリケーション(RazorPage) + ビルドイベント種類 : ビルド後イベントのコマンドライン + ビルド後イベントの実行タイミング : ビルドが成功したとき ### 該当のソースコード ビルドイベント ``` "$(SolutionDir)deploy.bat" ``` deploy.bat ``` "" > path_result.txt PATH >> path_result.txt "" > scp_result.txt scp 2>> scp_result.txt ``` ### 期待する結果 path_result.txt ``` (省略) ``` scp_result.txt ``` usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target ``` ### 実際の結果 path_result.txt ``` PATH=C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\ProgramData\Lenovo\ReadyApps;C:\Program Files\EmEditor;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Java\jdk1.8.0_25\bin\;C:\play-2.2.5\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.1\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Program Files (x86)\EaseUS\Todo Backup\bin;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git LFS;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files\dotnet\;C:\nodejs\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Go\bin;C:\Program Files\Git\cmd;C:\Users\Hoo\.dnx\bin;C:\Program Files (x86)\Git\bin;C:\nuget\;C:\Program Files\EmEditor;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\Hoo\AppData\Local\Microsoft\WindowsApps;Z:\src\go\bin;C:\Users\Hoo\AppData\Roaming\npm;Z:\src\go\bin;C:\Users\Hoo\.dotnet\x64;C:\Users\Hoo\.dotnet\tools;C:\Program Files (x86)\EaseUS\Todo Backup\bin\x64\ ``` scp_result.txt ``` 'scp' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ``` ### 他に試したこと + 直接deploy.batを実行したところ、出力内容が期待する結果となりました。 + dirの出力結果をファイルに書き出すようにdeploy.batを変更し、VSのリビルドするとフォルダ内容がファイルに出力されました。 + sshのエラー出力結果をファイルに書き出すようにdeploy.batを変更し、VSのリビルドするとscpの時と同じ結果になりました。
回答: WOW64のせいでリダイレクトされてsystem32配下を見ていないのではないですかね? VisualStudioは32ビットアプリなので、system32配下をアクセスしようとするとsyswow64にアクセスすることになるのではないかと思います。 そこで、syswow64にOpenSSHフォルダがない為にエラーになっているのではないでしょうか 32ビット版のものをインストールできるのであれば、インストールしたらsyswow64フォルダにインストールされるのではないかと思います。 (実験できる環境にないので想像です) そうすれば、ビルドイベントからscpが使えるのではないかと思います。