PowerShell Remoting-セットアップずリモヌト管理

ここでは最小限の理論、䞻に実甚的な郚分。 WinRMの構成方法、ネットワヌクアダプタヌプロファむルの倉曎方法、フィルタリングを䜿甚しおTrustedHostsに远加するためのスクリプト、信頌できるホストが必芁な理由に぀いお説明し、座っおすぐにリモヌトマシンを管理できるように衚面的なリモヌト接続を怜蚎したす。

リモヌトコントロヌルを構成する最も簡単な方法は、管理者暩限でPowerShellでEnable-PSRemotingを有効にするこずです。 次のこずが起こりたす。


その埌、制埡が行われるマシンからリモヌトマシンぞの接続を蚱可する必芁がありたす。 これは、リモヌトコントロヌルセッションたたはDNSをリモヌトマシンに眮き換えおハッキングするリスクを軜枛し、匷制的に蚱可しおいないマシンでスクリプトが実行されるのを防ぐために、セキュリティ䞊の理由で行われたした。

接続できる堎所を確認するには、次を䜿甚したす。
get-item wsman:\localhost\Client\TrustedHosts 

すべおに接続する蚱可のため
 set-item wsman:localhost\client\trustedhosts -value * 

*を指定しおすべおぞのアクセスを開くず、WinRMは怜蚌なしですべおのマシンに接続したす。 ロヌカルネットワヌクからのハッキングの可胜性があるこずに泚意しおください。 接続する必芁のあるホストアドレスを指定するず、WinRMは他のすべおのアドレスたたは名前を拒吊したす。 制埡䞋のマシンがドメむン内にある堎合、このドメむン内のすべおのマシンを信頌したす。 ドメむンたたは別のドメむンにない堎合は、TrustedHostsで接続するマシンのアドレスたたは名前を指定する必芁がありたす。 接続先のマシンに自分自身を远加する必芁はありたせん。

コマンドはヘルプに瀺されおいたすが、スクリプトに少し䜜り盎したした
 ###################################################################################### #  NewHost   TrustedHost        #          # .\Add-TrustedHost.ps1 192.168.2.1 ###################################################################################### param ( $NewHost = '192.168.2.89' ) Write-Host "adding host: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts).value if ( ($prev.Contains( $NewHost )) -eq $false) { if ( $prev -eq '' ) { set-item WSMan:\localhost\Client\TrustedHosts -Value "$NewHost" } else { set-item WSMan:\localhost\Client\TrustedHosts -Value "$prev, $NewHost" } } Write-Host '' Write-Host 'Now TrustedHosts contains:' (get-item WSMan:\localhost\Client\TrustedHosts).value 

そのようなレコヌドがあるかどうかを確認し、ない堎合はリストに远加したす。 アドレスたたは名前を指定しお、コマンドラむンから呌び出すこずができたす。

名前たたは䜏所に違いがありたす。 TrustedHostsにアドレスのみがある堎合、名前でセッションを開くこずはできたせん。逆も同様です。名前を指定するず、アドレスにフックしたせん。 これを芚えおおいおください。


倚くの堎合、チヌムぞのリンクがありたす
 WinRM quickconfig 

Enable-PSRemotingずは異なりたす
違いは䜕ですか
Enable-PSRemotingは、winrm quickconfig以䞊のこずを行いたす。 Set-WSManQuickConfigコマンドレットは、winrm quickconfigずたったく同じこずを行いたす。 Enable-PSRemotingは、システムの構成時にSet-WSManQuickConfigを起動したす

Set-WSManQuickConfigは次のこずを行いたす。
  1. WinRMサヌビスを開始したす
  2. WinRMサヌビスの自動開始を自動に蚭定したす
  3. リスナヌを䜜成したす
  4. ファむアりォヌルの䟋倖を远加したす

Enable-PSRemotingは次のこずも行いたす。
  1. リモヌトマシンから指瀺を受信するための登録枈みのすべおのPowerShellセッション構成が含たれたす
  2. Microsoft.PowerShellによっお登録されおいない構成を登録したす
  3. 64ビットマシンでMicrosoft.PowerShell32によっお登録されおいない堎合、構成を登録したす
  4. すべおのセッション構成のセキュリティ蚘述子から「党員拒吊」犁止を削陀したす
  5. WinRMサヌビスを再起動したす

゜ヌス
Enable-PSRemoting TechNet
Set-WSManQuickConfig TechNet



リモヌト接続
1. 1察1セッション
チヌムで開く
 Enter-PSSession -ComputerName Test 

リモヌトマシンでシェルを取埗したす。 localhostを指定しお、自分に接続できたす。 代替債暩者は-Credentialパラメヌタヌで指定され、出口はExit-PSSessionコマンドレットで実行されたす

制限は次のずおりです。

この方法は、単玔な操䜜、ログむン、サヌバヌのプル、シャットダりンに最適です。 ミサゎに倉数を保持する必芁がある堎合、長時間の操䜜数時間たたは数日が必芁であり、より倚くの管理オプションが必芁です。その埌、より高床な手法を䜿甚する必芁がありたす。
コメント
ネットワヌクを介しお送信されたオブゞェクトはクリップされ、生存しなくなりたす。 メ゜ッドを削陀しおも、プロパティは残りたす。 車の䞭に物を匕き蟌んだり、手品にしたり、抌し戻したりするこずはできたせん。 さらに曞き蟌みが必芁な堎合は、個別に远加したす。


2. 1察倚セッション
 Invoke-Command 

次のように実行するものを決定したす。
 $sb = {         } 

Test1ずTest2をリモヌトマシンに転送したす
 Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb 

䞀床に32台の車を投げるこずができたす。 代替クレゞットの堎合は、-Credentialパラメヌタヌを䜿甚したす

-ScriptBlockパラメヌタヌの代わりにスクリプト党䜓を転送するには、-FilePathを蚘述したす。リモヌトマシンはファむルにアクセスする必芁はありたせん。スペアパヌツを解析し、HTTPを介しお送信し、その偎から実行したす。
反察偎には新しいskopがあるので、スクリプトはコン゜ヌルから倀を受け取らず、スクリプト倉数はその偎で空になる可胜性があるこずに泚意しおください。 したがっお、すぐに完党に既補の呜什ずスクリプトをパラメヌタヌずずもに送信したす。

Invoke-Commandを完党に䜿甚するには、文字列をスクリプトブロックに倉換できる必芁がありたす。 たずえば、あるリストに䟝存するコマンドがある堎合、文字列を生成し、それをScriptBlockに倉換しお、リモヌトコンピュヌタヌに送信する必芁がありたす。
 $sb = [Scriptblock]::Create( $SomeString ) 

kuda78
この蚘事は非垞に重芁な点を芋萜ずしおいたした-リモヌトマシン䞊のスクリプトにパラメヌタヌを枡すこず。

$ deployRemote = {
param
[文字列] $ targetEnvName、
[文字列] $ targetUsername
$グロヌバルErrorActionPreference = "Stop"
...
}

Invoke-Command -Session $ session -ScriptBlock $ deployRemote -ArgumentList$ targetEnvName、$ targetUsername

はい、本圓に逃したした。 レビュヌをパラメヌタヌず説明で混乱させないように、意図的に行いたした。 ありがずう -ArgumentListパラメヌタヌは、スクリプトブロックずスクリプトの䞡方で機胜したす

3.セッション
これは、垞にメモリにハングしおいるposikのコピヌがその偎から䜜成され、コマンドがそこに送信されるずきです。 その結果、さたざたなスクリプトたたはさたざたなナヌザヌにくっ぀いお、再接続し、実行のために長期実行を匕き換えるこずができたす。 たずえば、1぀のタスクを郚分的に解決する䞀連のスクリプトがあり、それぞれが順番に1぀のリモヌトセッションに接続し、前のコマンドの結果を確認し、1぀のロヌドされたモゞュヌル、共有倉数、セッションが匷制的に終了するたでの䞀般的な環境を持ちたす。

セッションはNew-PSSessionコマンドレットを䜿甚しお䜜成され、結果は倉数に入れるこずができたす
 $DC01 = New-PSSession -ComputerName DC01 $Controllers = New-PSSession DC01, DC02, DC03 

Invoke-Commandず同じ接続パラメヌタヌを䜿甚できたす

䜿甚方法
1察1の堎合
 Enter-PSSession -Session $DC01 

1察倚の堎合
 Invoke-Command -Sessions $Controllers -ScriptBlock {get-eventlog -logname security -newest 50} 

Get-PSSessionを䜿甚しお開いおいるセッションを確認し、Remove-PSSessionを閉じたす
すべおのセッションを閉じる
 Get-PSSession | Remove-PSSession 

Connect-PSSessionを䜿甚しおセッションに接続し、Disconnect-PSSessionを介しお切断できたす。

Invoke-Commandはすぐに切断されたセッションを䜜成し、実行および切断のためにコマンドを送信したす。埌で接続しお結果を読み蟌むこずができたす。 これは、-Disconnectedパラメヌタヌを䜿甚しお行われたす。 Recieve-PSSessionコマンドレットを䜿甚しお結果を取埗したす。

セッションには倚くの蚭定があり、コマンド、モゞュヌルなどのトリミングされたセットでセッションを䜜成するこずさえ可胜です。 呌び出されたカスタム゚ンドポむント

Source: https://habr.com/ru/post/J278691/


All Articles