ããã§ã¯æå°éã®çè«ãäž»ã«å®çšçãªéšåã WinRMã®æ§ææ¹æ³ããããã¯ãŒã¯ã¢ããã¿ãŒãããã¡ã€ã«ã®å€æŽæ¹æ³ããã£ã«ã¿ãªã³ã°ã䜿çšããŠTrustedHostsã«è¿œå ããããã®ã¹ã¯ãªãããä¿¡é Œã§ãããã¹ããå¿
èŠãªçç±ã«ã€ããŠèª¬æãã座ã£ãŠããã«ãªã¢ãŒããã·ã³ã管çã§ããããã«è¡šé¢çãªãªã¢ãŒãæ¥ç¶ãæ€èšããŸãã
ãªã¢ãŒãã³ã³ãããŒã«ãæ§æããæãç°¡åãªæ¹æ³ã¯ã管çè
æš©éã§PowerShellã§
Enable-PSRemotingã
æå¹ã«
ããããšã§ãã 次ã®ããšãèµ·ãããŸãã
- WinRMãµãŒãã¹ãéå§ãããŸãïŒåèµ·åãããšãåèµ·åããŸãïŒ
- WinRMãµãŒãã¹ãç¶æ
ã«ãªã-èµ·åæã®èªåéå§
- ãã¹ãŠã®ããŒã«ã«IPã¢ãã¬ã¹ã®ããŒã5985ã§HTTPãã©ãã£ãã¯çšã®WinRMãªã¹ããŒãäœæãããŸã
- WinRMãªã¹ããŒçšã®ãã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ãäœæãããŸãã 泚æããããã¯ãŒã¯ã«ãŒãã®ããããã«ããããªãã¯ããããã¯ãŒã¯ã¿ã€ããããå Žåããã®é
ç®ã¯ãšã©ãŒã§çµäºããŸãã ãã®ãããªã«ãŒãã®ããŒããéãã®ã¯è¯ããããŸããã æ§æäžã«ãã®ãããªãšã©ãŒãçºçããå Žåã¯ã Set-NetConnectionProfileã³ãã³ãã¬ããã䜿çšããŠãã®ãããã¯ãŒã¯ã«ãŒãã®ãããã¡ã€ã«ãå€æŽããEnable-PSRemotingãå床å®è¡ããŸãã ãããªãã¯ãããã¯ãŒã¯ãããã¡ã€ã«ã®ãããã¯ãŒã¯ã«ãŒããå¿
èŠãªå Žåã¯ã -SkipNetworkProfileCheckãã©ã¡ãŒã¿ãŒãæå®ããŠ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ã¯æ¬¡ã®ããšãè¡ããŸãã
- WinRMãµãŒãã¹ãéå§ããŸã
- WinRMãµãŒãã¹ã®èªåéå§ãèªåã«èšå®ããŸã
- ãªã¹ããŒãäœæããŸã
- ãã¡ã€ã¢ãŠã©ãŒã«ã®äŸå€ãè¿œå ããŸã
Enable-PSRemotingã¯æ¬¡ã®ããšãè¡ããŸãã
- ãªã¢ãŒããã·ã³ããæ瀺ãåä¿¡ããããã®ç»é²æžã¿ã®ãã¹ãŠã®PowerShellã»ãã·ã§ã³æ§æãå«ãŸããŸã
- Microsoft.PowerShellã«ãã£ãŠç»é²ãããŠããªãæ§æãç»é²ããŸã
- 64ããããã·ã³ã§Microsoft.PowerShell32ã«ãã£ãŠç»é²ãããŠããªãå Žåãæ§æãç»é²ããŸã
- ãã¹ãŠã®ã»ãã·ã§ã³æ§æã®ã»ãã¥ãªãã£èšè¿°åãããå
šå¡æåŠãçŠæ¢ãåé€ããŸã
- WinRMãµãŒãã¹ãåèµ·åããŸã
ãœãŒã¹Enable-PSRemoting TechNetSet-WSManQuickConfig TechNet
ãªã¢ãŒãæ¥ç¶1. 1察1ã»ãã·ã§ã³ããŒã ã§éã
Enter-PSSession -ComputerName Test
ãªã¢ãŒããã·ã³ã§ã·ã§ã«ãååŸããŸãã localhostãæå®ããŠãèªåã«æ¥ç¶ã§ããŸãã 代æ¿åµæš©è
ã¯
-Credentialãã©ã¡ãŒã¿ãŒã§æå®ãããåºå£ã¯
Exit-PSSessionã³ãã³ãã¬ããã§å®è¡ãããŸãå¶éã¯æ¬¡ã®ãšããã§ãã
- 2åç®ã®ãžã£ã³ãã¯ã§ããŸãã-1ã»ãã·ã§ã³ã®ã¿ãã»ãã·ã§ã³å
ã§ããã«æ¥ç¶ããããšã¯ã§ããŸãã
- ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãæã€ã³ãã³ãã¯äœ¿çšã§ããŸããã ãããè¡ããšãã·ã§ã«ããã³ã°ããCtrl + CãæŒããŠãµã°ããŸã
- nslookupãnetshãªã©ãç¬èªã®goãæã€ã³ãã³ãã¯å®è¡ã§ããŸããã
- ãªã¢ãŒããã·ã³ã®èµ·åããªã·ãŒã§ã¹ã¯ãªããã®å®è¡ãèš±å¯ãããŠããå Žåãã¹ã¯ãªãããå®è¡ã§ããŸãã
- ã€ã³ã¿ã©ã¯ãã£ãã»ãã·ã§ã³ã«ããã¿ã€ããŠããªãå Žåã¯ããããã¯ãŒã¯ãã©ã€ãã«ããã¿ã€ããŠãããã®ããã«ããããã¯ãŒã¯ãã°ãªã³ããšããŠãã°ã€ã³ããŸãã ãããã£ãŠããã°ãªã³ã¹ã¯ãªããã¯éå§ãããããªã¢ãŒããã·ã³äžã®ããŒã ãã©ã«ããŒãååŸã§ããªãå ŽåããããŸãïŒãã°ãªã³ã¹ã¯ãªããã§ãã©ã«ããŒããããããªãå¥ã®çç±ïŒ
- ãŠãŒã¶ãŒããªã¢ãŒããã·ã³ã«ãã°ã€ã³ããŠããŠãããã®ãŠãŒã¶ãŒãšå¯Ÿè©±ããããšã¯ã§ããŸããã 圌ã«ãŠã£ã³ããŠãèŠããããäœããå°å·ãããããããšã¯ã§ããŸããã
ãã®æ¹æ³ã¯ãåçŽãªæäœããã°ã€ã³ããµãŒããŒã®ãã«ãã·ã£ããããŠã³ã«æé©ã§ãã ããµãŽã«å€æ°ãä¿æããå¿
èŠãããå Žåãé·æéã®æäœïŒæ°æéãŸãã¯æ°æ¥ïŒãå¿
èŠã§ãããããå€ãã®ç®¡çãªãã·ã§ã³ãå¿
èŠã§ãããã®åŸãããé«åºŠãªææ³ã䜿çšããå¿
èŠããããŸãã
ã³ã¡ã³ã
ãããã¯ãŒã¯ãä»ããŠéä¿¡ããããªããžã§ã¯ãã¯ã¯ãªãããããçåããªããªããŸãã ã¡ãœãããåé€ããŠããããããã£ã¯æ®ããŸãã è»ã®äžã«ç©ãåŒã蟌ãã ããæåã«ããããæŒãæ»ãããããããšã¯ã§ããŸããã ããã«æžã蟌ã¿ãå¿
èŠãªå Žåã¯ãåå¥ã«è¿œå ããŸãã
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ã³ãã³ãã¬ããã䜿çšããŠçµæãååŸããŸãã
ã»ãã·ã§ã³ã«ã¯å€ãã®èšå®ããããã³ãã³ããã¢ãžã¥ãŒã«ãªã©ã®ããªãã³ã°ãããã»ããã§ã»ãã·ã§ã³ãäœæããããšããå¯èœã§ãã åŒã³åºãããã«ã¹ã¿ã ãšã³ããã€ã³ã