* nixマシン用に設計されたフレームワークをWindowsに拡張するためのソリューションを考え出すのに苦労しています。フレームワークは現在、1つの* nixサーバーから他の* nixサーバーにsshを実行し、ログファイルの確認、ソース管理からのファイルの同期、ソース管理へのログの送信など、さまざまなコマンドを実行します。立ち往生しているのは、リモートのWindowsマシンに接続してコマンドラインにアクセスする方法です。接続は別のWindowsマシンからも可能です。UNIXマシンから開始する必要はありません。UNIXからWindowsではなくWindowsからWindowsに接続できます。
以下は、UNIXシステムでコマンドが現在どのように実行されるかの例です。このようなものは、サーバー名のリストを通過するループにあります。 Windowsマシンで実行するには、このようなものが必要です。
ssh ${user}@${server} "cd /app/app_name/logs; <export source control params>; <submit logs to source control>" >> Log.txt
また、サードパーティのツールを使用したくない(予算は約0ドル)。私はPsExecと他のいくつかをチェックアウトしましたが、管理者アクセスが必要であるか、ユーザーを渡す/プレーンテキストで渡す必要があるようです。
Powershell Remotingを使用する: https://msdn.Microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands
恥知らずにコピー貼り付け:
Windows PowerShellリモート処理
WS-Managementプロトコルを使用するWindows PowerShellリモート処理を使用すると、1つまたは複数のリモートコンピューターで任意のWindows PowerShellコマンドを実行できます。永続的な接続を確立し、1対1の対話型セッションを開始し、複数のコンピューターでスクリプトを実行できます。 Windows PowerShellリモート処理を使用するには、リモートコンピューターがリモート管理用に構成されている必要があります。 Windows PowerShellリモート処理を構成すると、多くのリモート処理戦略を利用できるようになります。このドキュメントの残りの部分では、それらのほんの一部をリストしています。
インタラクティブセッションを開始する
単一のリモートコンピューターとの対話型セッションを開始するには、Enter-PSSessionコマンドレットを使用します。たとえば、Server01リモートコンピューターとの対話型セッションを開始するには、次のように入力します。
Enter-PSSession Server01
コマンドプロンプトが変わり、接続しているコンピューターの名前が表示されます。それ以降、プロンプトで入力したコマンドはすべてリモートコンピューターで実行され、結果がローカルコンピューターに表示されます。
インタラクティブセッションを終了するには、次のように入力します。
Exit-PSSession
リモートコマンドを実行する
1つまたは複数のリモートコンピューターでコマンドを実行するには、Invoke-Commandコマンドレットを使用します。たとえば、Server01およびServer02リモートコンピューターでGet-UICultureコマンドを実行するには、次のように入力します。
invoke-command -computername Server01, Server02 {get-UICulture}
出力がコンピューターに返されます。
LCID Name DisplayName PSComputerName ---- ---- ----------- -------------- 1033 en-US English (United States) server01.corp.fabrikam.com 1033 en-US English (United States) server02.corp.fabrikam.com
スクリプトを実行する
1つまたは複数のリモートコンピューターでスクリプトを実行するには、Invoke-CommandコマンドレットのFilePathパラメーターを使用します。スクリプトはローカルコンピュータ上にあるか、ローカルコンピュータからアクセスできる必要があります。結果はローカルコンピュータに返されます。
たとえば、次のコマンドは、Server01およびServer02リモートコンピューターでDiskCollect.ps1スクリプトを実行します。
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
永続的な接続を確立する
データを共有する一連の関連コマンドを実行するには、リモートコンピューターでセッションを作成してから、Invoke-Commandコマンドレットを使用して、作成したセッションでコマンドを実行します。リモートセッションを作成するには、New-PSSessionコマンドレットを使用します。
たとえば、次のコマンドは、Server01コンピューターにリモートセッションを作成し、Server02コンピューターに別のリモートセッションを作成します。 $ s変数にセッションオブジェクトを保存します。
$s = new-pssession -computername Server01, Server02
セッションが確立されたので、セッションで任意のコマンドを実行できます。また、セッションは永続的であるため、1つのコマンドでデータを収集し、それを後続のコマンドで使用できます。
たとえば、次のコマンドは、$ s変数のセッションでGet-Hotfixコマンドを実行し、結果を$ h変数に保存します。 $ h変数は$ sの各セッションで作成されますが、ローカルセッションには存在しません。
invoke-command -session $s {$h = get-hotfix}
これで、次のような後続のコマンドで$ h変数のデータを使用できます。結果はローカルコンピュータに表示されます。
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }
Bitviseの tunnellier を試してください。それはsshクライアントです。 Windowsマシンに接続するための ssh server もあります。 2つを使用すると、Webプロキシやポートトンネリングなどのより高度な機能とともに、非常に安全な接続を確立できます。
Windows用のOpenSSHポートをインストールします。これは無料で、クライアントとサーバーの両方を提供します。
PowerShellのアイデアは本当に気に入っていますが、サーバーとクライアントで構成に数分かかる場合があります。
PowerShellの使用を示唆しているShantevaの完全な回答とは別に、PowerShellサーバーへのリモート接続を実際に有効化(および許可)する方法については、howtogeek Webサイトの Here も参照してください。サーバーコンピュータで必要な設定が少しあります。
実行する必要がある2つの重要なこと:(すべての構成を「管理者として」行う必要があることについて言及する必要はありません。PowerShell/ cmdを「管理者として」開いてください)
サーバーコンピューターでPowerShellを開き、次のコマンドを実行します。
Enable-PSRemoting -Force
これを行う他の方法もあります。コマンドプロンプトを開いて実行できます。
winrm -quickconfig
変更する構成がさらに多くなる可能性があります。今は必要ありません。
両方のコンピューターが同じ「ドメイン」(誰もが異なるルールと役割が割り当てられているコンピューターのグループ)にある場合、手順は単純なようです(私は試していません)。
ただし、おそらくインターネット(WANネットワークと呼ばれます)を介してサーバーにアクセスする必要があるため、いくつかの複雑な問題があり、リモートサーバーへの接続を許可するように構成を変更する必要があります。 [〜#〜]クライアント[〜#〜]コンピュータがWINRMサービスを有効にします。上記のサーバーに対して行ったのと似ていますが、次のコマンドを実行するだけです。
Enable-PSRemoting -Force
(ここでも注目に値します。クライアントコンピュータとサーバーコンピュータが「プライベート」ネットワーク上にある必要がある、またはすべてが機能しないとの言及があります。上記のコマンドを実行すると、このエラーメッセージが表示されますが、すべてが機能します。 。この事実はよくわかりません。前述のWebページを確認してください。)
次に、PowerShellの[〜#〜] client [〜#〜]コンピューターで実行します。
Set-Item wsman:\localhost\client\trustedhosts *
つまり、クライアントはすべてのサーバー(ホスト)を信頼します。最後に、これを([〜#〜] client [〜#〜]でもう一度実行します。強調):
Restart-Service WinRM
あなたは行く準備ができています。 Shantevaの残りの回答を確認してください。クライアントコンピュータで、たとえば次のコマンドを実行します。
Enter-PSSession -ComputerName 12.34.56.78 -Credential Administrator
パスワードが要求され、次のようなリモートコンソールが開きます。
[12.34.56.78]: PS C:\Users\Administrator\Documents>
次に、SSHの場合と同じようにコマンドを入力します。