본문 바로가기

OS-서버/윈도우

Powershell 원격 제어

반응형

● Powershell 자격증명

 

① 계정 프롬프트를 이용하여 자격 증명

 

1. 원격 명령을 수신할 수 있도록 다음과 같은 명령어를 실행한다.

Enable-PSRemoting -SkipNetworkProfileCheck -Force
 
#Parameter :  SkipNetworkProfileCheck = 로컬 네트워크에서 원격 액세스 허용 
#           , Force = 확인 메시지 띄우지 않기
cs

2. 신뢰할 수 있는 호스트 목록에 대상 서버를 추가한다.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "원격서버 IP 또는 원격서버 호스트명" -Force
cs

3. 원격 접속 자격증명 설정

$MyCredential = Get-Credential "접근할 원격서버의 계정"
cs

 

 

② 프롬프트 없이 입력된 계정 정보를 이용하여 자격 증명

 

1. 원격 대상 서버의 패스워드를 암호화한다.

$MyPassword = "$Remote_Server_Passwd" | ConvertTo-SecureString -AsPlainText -Force 
cs

2. 자격증명을 위한 오브젝트를 생성한다.

$ObjectTypeName = "System.Management.Automation.PSCredential"
cs

3. 오브젝트에 계정값을 인자로 전달하고 자격증명을 생성한다.

$MyCredential = New-Object -TypeName $ObjectTypeName -ArgumentList "$Remote_Account",$MyPassword
cs

 

● 원격 서버 접근

 

접속하기 전에 원격 대상 컴퓨터에 원격 관리 서비스(WinRM)가 실행 중인지 확인한다. 

1
2
3
4
if ( ![bool](Test-WSMan -ComputerName "원격서버 IP 또는 원격서버 호스트명" -ErrorAction SilentlyContinue) )
{
    echo "The WinRM service was not running on the remote computer."
}
cs

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "원격서버 IP 또는 원격서버 호스트명" -Force
$MyCredential = Get-Credential "접근할 원격서버의 계정"
Enter-PSSession -ComputerName "원격서버 IP 또는 원격서버 호스트명" -Credential $MyCredential
cs

 

 

 

● 원격 명령 실행

Enable-PSRemoting -SkipNetworkProfileCheck -Force 
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "$Remote_Host1" -Force
$MyPassword = "$Remote_Server_Passwd" | ConvertTo-SecureString -AsPlainText -Force 
$MyCredential = New-Object -TypeName $ObjectTypeName -ArgumentList "$Remote_Account",$MyPassword... 
Invoke-Command -ComputerName "$Remote_Host1","$Remote_Host2","$Remote_Host3" -Credential $MyCredential -ScriptBlock { ipconfig }
cs

 

 

● 원격 서버에 파일 전송

Enable-PSRemoting -SkipNetworkProfileCheck -Force 
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "$Remote_Host" -Force
$MyPassword = "$Remote_Server_Passwd" | ConvertTo-SecureString -AsPlainText -Force 
$ObjectTypeName = "System.Management.Automation.PSCredential"
$MyCredential = New-Object -TypeName $ObjectTypeName -ArgumentList "$Remote_Account",$MyPassword
 
$core = New-PSSession -ComputerName "$Remote_Host" -Credential $MyCredential
Copy-Item -ToSession $core "$C:\Users\file.txt" -Destination "C:\"
cs

 

 

반응형

'OS-서버 > 윈도우' 카테고리의 다른 글

Powershell XML  (0) 2018.03.20
Powershell 잡지식  (0) 2018.03.20
Powershell Alias  (0) 2018.03.20
Powershell 기본 문법  (2) 2018.03.20
system32 폴더안에 파일 변경권한 수정  (0) 2017.10.02