서버 / IT powershell 명령어 확인 및 조언 요청 드립니다.
2017.01.19 18:58
안녕하세요?
powershell 스크립트 내용 중, 아래와 같이 서버 hostname 을 변경하는 내용이 있습니다.
만약 서버 hostname 이 abcd 인데, 동일하게 abcd로 변경할 경우 오류가 발생해 더이상 다음 스크립트가 동작하지 않고
종료됩니다.
명령어 중, hostname 을 체크하여 기존 hostname 과 변경할 hostname 이 동일할 경우 패스처리 할 수 있는 내용 조언 부탁 드립니다.
추가로, 아래와 같은 명령어에 대해 좀 더 자세하게 공부할 수 있는 powershell 관련 좋은 책이 있으면 추천 부탁 드립니다.
감사합니다.
-----------------------------------------------------------------------------------------------------------------------------
#3. 서버명 변경하기
Function NewHostName
{
WriteLog("3. 서버명을 변경합니다.")
echo("")
echo("")
echo("현재 hostname : "+(hostname))
echo("")
echo("")
$new_hostnameinput=Read-Host -Prompt '변경할 서버명을 입력하세요.'
$old_hostname = hostname
WriteLog("OLDhostname : " + $old_hostname)
WriteLog("NEWhostname : " + $new_hostnameinput)
netdom renamecomputer $old_hostname /newname:$new_hostnameinput /force >> C:\log.txt 2>&1
if($? -ne "True")
{
$Error[0] >> C:\log.txt
$Error.Clear()
WriteLog("3. 서버명 변경에 실패하였습니다.")
EndLog
exit
}
WriteLog("3. 서버명 변경을 완료하였습니다.")
echo("")
echo("")
control /name Microsoft.System
Start-Sleep -s 3
}
파워쉘은 잘 모르겠지만... 새로운 컴퓨터 이름이랑 기존 컴퓨터 이름을 전부 변수에 넣고 조건문 돌리면 되지 않을까요?
검색으로 간단하게 컴퓨터 이름 변경하고 재부팅하는 스크립트를 만들어 봤습니다.
Function NewHostName
{
cls
Write-Host("3. 서버명을 변경합니다.")
echo("")
echo("")
echo("현재 hostname : "+(hostname))
echo("")
echo("")
$newHostnam = Read-Host -Prompt '변경할 서버명을 입력하세요.'
if($newHostnam -eq $env:COMPUTERNAME)
{
cls
Write-Host "컴퓨터 이름이 같습니다"
}
elseif($newHostnam -eq "")
{
cls
exit
}
else
{
Rename-Computer -NewName $newHostnam -Restart
}
}
NewHostName