Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

Enter-PSSession コマンドレットを使用すると、リモートコンピューターとの永続的な対話型PowerShellセッションを確立できます。コマンドプロンプトに入力するすべてのコマンドは、リモートコンピューターで実行されます。この記事では、Enter-PSSessionの主な機能と、それを使用してWindows10/11およびWindowsServer2022/2019/2016を実行しているコンピューターをリモート管理する方法について説明します。

Enter-PSSession コマンドレットは、 PowerShell Remotingを利用しています。 スタック。 PSRemotingは、管理用Webサービスに基づいています (WS-Management)およびWinRMサービス (Windowsリモート管理)。コンピューター間のトラフィックはプロトコルレベルで暗号化されます(オプションで、PSRemoting WinRMトラフィックのSSL暗号化を有効にできます)。 NTLMやKerberosなど、さまざまな認証方法を使用できます。

単純なケースでは。リモートコンピューターとの対話型PowerShellセッションを確立するには、接続するコンピューター名(コンピューター名)のみを指定する必要があります。 オプション)。リモートコンピュータに接続するには、次のコマンドを実行するだけです:

Enter-PSSession hq-srv01.woshub.com

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

現在のユーザーがリモートホストに接続する権限を持っている場合は、リモートコンピューター上のインタラクティブシェルに接続します。

接続する前にユーザーの資格情報の入力を求めることができます:

Enter-PsSession –ComputerName hq-srv01.woshub.com –Credentials woshub\maxbak

または:

$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $creds

これで、PowerShellプロンプトの先頭にリモートコンピューターの名前が角かっこで囲まれて表示されることに注意してください( [hq-srv01.woshub.com] )。このようにして、ローカルまたはリモートのシェルセッションで実行しているかどうかを確認できます。

リモートで実行されるすべてのコマンドの出力は、ローカルコンソールに表示されます。 hostnameを実行できます コマンドを実行し、リモートコンピュータで実行していることを確認してください。

このインタラクティブなコマンドプロンプトで任意のコマンドを実行できます(特権に応じて)。

たとえば、PowerShellを使用してWindowsネットワーク設定を表示しましょう。

Get-NetIPConfiguration

リモートコンピューターのDNS設定を変更できます:

Set-DNSClientServerAddress –InterfaceIndex 6 –ServerAddresses 192.168.13.4, 192.168.100.4

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

インタラクティブなリモートシェルセッションを終了するには、Exit-PSSessionを実行します またはexit 。 PSプロンプトが通常どおりになり、ローカルのPowerShellコンソールに戻ります。

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

以前は、管理者は主に PsExecを使用していました リモートWindowsコンピューターで対話型コマンドプロンプトを実行するためのツール。ただし、Enter-PSSessionが登場すると、外部ツールを使用する必要がなくなります。

Windows Server 2016/2019/2022では、PowerShell Remotingはデフォルトで有効になっています([サーバーマネージャー]->[ローカルサーバー]->[リモート管理]=[有効]で確認できます)。

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行
デスクトップWindowsバージョン(Win10、Win11)では、PSRemotingとWinRMが無効になっています。
次のコマンドを使用して、現在のコンピューターでPSRemotingが有効になっているかどうかを確認できます。

Get-PSSessionConfiguration

このコマンドは、WinRM経由での接続を許可されているユーザーとグループのリストを取得するためにも使用されます。 PSRemotingを使用するには、ユーザーアカウントが管理者のメンバーである必要があります またはリモート管理ユーザー グループ。管理者以外のユーザーに対してWinRMPowerShellRemotingを有効にする方法の詳細を学ぶことができます。

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

PowerShell Remotingを介してローカルでコンピューターに接続できるかどうかをテストできます:

Test-WSMan -ComputerName localhost

コマンドがWSManスキーマバージョンを返す場合、PSRemotingを使用したコンピューターへのリモート接続が許可されます。

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

PowerShell Remotingが無効になっているか、構成されていない場合、次のエラーが表示されます。

Test-WSMan : <f:WSManFaultxmlns:f="https://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f:Message>The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".

PowerShell Remotingを有効にするには、次のコマンドを実行します。

Enable-PSRemoting -Force

このコマンド:

  • WinRMサービスを有効にし、そのスタートアップの種類を自動に設定します;
  • デフォルトのWinRMポート(HTTPトラフィックの場合はTCP / 5985)に接続ポイントを作成します。
  • WS-Managementの例外をWindowsファイアウォールに追加します(PSRemotingを手動で構成している場合は、PowerShellまたはGPOを使用してファイアウォールルールを追加します)
  • リモートPowerShellセッションを許可します
  • WinRMサービスを再開します

WinRMサービスが実行されており、自動的に開始するように設定されていることを確認してください:

Get-Service WinRM | Select MachineName,Name,Status, StartTypeを選択します

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

Enable-PSRemotingコマンドは、ドメインおよびプライベートWindowsネットワークプロファイルに対してのみ機能します。パブリックネットワーク内のコンピューターでPSRemotingを有効にする場合は、ネットワークの場所をパブリックからプライベートに変更するか、以下のコマンドを使用します。

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Active Directoryドメインでは、サーバーとコンピューターでWindowsリモート管理(PSRemoting)を一元的に構成する最も簡単な方法は、グループポリシーを使用することです。

最新のPowerShellバージョン(v6またはv7)は、PowerShell Remotingを介してリモートコンピューターに接続するためのSecureShellプロトコル(SSH)をサポートしています。 SSH接続ポイントがリモートコンピューターで使用可能である必要があります(Windows 10で組み込みのOpenSSHサーバーを有効にする方法は?)。次のコマンドを使用して、SSH経由でインタラクティブなPSRemotingセッションを開始できます。

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com

または、RSAキーを使用してSSH経由で認証します:

Enter-PSSession -HostName maxbak@hq-srv01.woshub.com:22 -KeyFilePath c:\PS\max_rsa_key

Enter-PSSessionをNew-PSSessionと一緒に使用できます :

$s = New-PSSession -ComputerName hq-srv01.woshub.com
Enter-PSSession -Session $s

Enter-PSSessionは、いくつかの認証方法をサポートしています。 -Authenticationパラメータを使用して必要なものを設定できます。 Basic、Digest、Kerberos、CredSSP、NegotiateWithImplicitCredential、NegotiateChallenge認証方式がサポートされています。

上記の例では、同じWindowsドメイン内のコンピューター間にインタラクティブなEnter-PSSession接続を作成する方法を示しました(接続にFQDNまたは短い名前を指定するだけで、Kerberos認証が使用されます)。 IPアドレスまたはCNAMEを使用してリモートコンピューターに接続しようとすると、認証されません:

Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.

Enter-PSSession:インタラクティブシェルでのリモートコマンドの実行

IPアドレスを使用してリモートコンピューターに接続するには、信頼できるホスト(信頼できるホスト)のリストにホストを追加するか、WinRMにSSLを使用します(より安全です)。

信頼できるホストにIPアドレスを追加するには、次のコマンドを実行します。

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5

ワイルドカードマスクを使用して信頼できるホストを追加できます:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.woshub.com

信頼できるホストのリストを表示するには:

Get-Item WSMan:\localhost\Client\TrustedHosts

同様に、リモートコンピューター上の信頼できるホストのリストにホストを追加できます。

サービスを再開します:

Restart-Service WinRM

IPアドレスを使用してリモートコンピュータに接続するには、次のコマンドを実行します。

Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName woshub\maxbak)

Enter-PSSession およびNew-PSSession コマンドレットは、永続的な1対1のリモートセッションを作成し、主にインタラクティブなシナリオで使用されます。スクリプトやジョブを自動的に実行したり、複数のリモートコンピューターで同時に何かを実行したりする場合は、Invoke-Commandコマンドを使用します。


  1. 削除方法 デフォルトのインタラクティブ シェルは zsh になりました。 Mac の場合

    zsh から bash に変更したり、macOS Catalina/Big Sur/Monterey に更新したりした場合は、「デフォルトのインタラクティブ シェルが zsh になりました。zsh を使用するようにアカウントを更新するには、chsh - s /bin/zsh。詳細については、https://support.apple.com/kb/HT208050 にアクセスしてください。 ターミナルを開くたびに。 Apple は、macOS Catalina 以降、デフォルトのインタラクティブ シェルを bash から zsh に変更しました。 macOS Monterey/Big Sur

  2. ADB Android インストール ガイド:ドライバーとコマンド

    この記事では、1 つ以上のデバイスとエミュレーターをインストール、テスト、診断、および管理する際に、ADB を使用して詳細な制御を行う方法について説明します。 ソフトウェア開発者としての最初の数年間は、主に Android SDK を扱っていましたが、Android Debug Bridge (ADB/adb) とは何か、それが何をするのか、いつ使用するのか、まったくわかりませんでした。 面白いことに、最初にそれについて学ぼうと思ったのは、何らかの専門的な目標ではありませんでした。むしろ、私が必死に復活させたかったのは、Nexus 6 をループするブートでした。そのような問題に対して、An