Windows Powershell 역시 스크립트를 지원 한다. 스크립트가 생소한 사람은 .bat 파일을 떠올리면 되겠다.
Powershell 스크립트의 확장자는 .ps1 인데 현재 Windows Server 2008 R2 와 Windows 7에 기본 내장 되어 있는 Powershell 버전이 2임에도 불구 하고 확장자는 그대로 ps1을 사용 한다. ps1의 뒤의 1 이라는 숫자가 버전을 의미 하는것이 아닌가? 생각하고 검색 해보니 msdn에 이런 문서가 있다.
Windows Powershell Blog – CTP:Versioning
참고로 자신의 Powershell 의 버전을 확인 하기 위해선 다음 명령이 유용하다.
Get-Host
Version 정보가 보일 것이다.
아니면 조금더 적나라하게 이것도 괜찮다.
(Get-Host).Version
Windows 2008 (R2가 아님) 과 Windows Vista(Vista는 직접 확인 해 보지 않았다.)에는 Powershell Version 이 1 인데 업그레이드 할 것을 권장한다.
다음 링크로 업그레이드 할 수 있다.
Windows Management Framework Core package (Windows PowerShell 2.0 and WinRM 2.0)
일반적인 스크립트가 그렇듯 Powershell 스크립트 역시 Text파일이다. 즉 메모장 (notepad)로 작성 할 수도 있고 유용한 툴을 이용 할 수도, 간단한 명령으로도 쉽게 만들 수 있다.
Powershell 에서 다음을 입력 하여 스크립트를 생성 해 보자.
PS C:ScriptTest> notepad Select-IPAddress.ps1
메모장이 열리면 다음을 입력 하고 저장 한다.
Select-IPAddress.ps1
$Table = @{} $Counter = 0 $IPAddresses = Get-WMIObject win32_NetworkAdapterConfiguration | where {$_.IPEnabled} | foreach {$_.IPAddress} Foreach ($Address in $IPAddresses) { Write-Host "$Counter : $Address" -ForegroundColor Yellow $Table.Add($Counter++ , $Address) } [int]$Number = Read-Host "Select Number:" return $Table[$Number]
그리고 작성한 스크립트를 실행 해 보자.
Powershell 이 설치된 초기 상태에서는 스크립트 실행이 불가능 하도록 설정 되어 있다. 아직 Execution Policy를 변경 하지 않았다면 먼저 다음 링크의 포스트를 본다.
Powershell 스크립트(Script) 실행을 위한 준비
스크립트를 실행하는 방법은 스크립트 이름을 적어주면 되는데 이때 주의 할점은 경로와 함께 적어 줘야 한다는 것이다. 이것은 스크립트에만 해당 되는 것이 아니라 Powershell 에서 파일을 대상으로 실행 할때 꼭 지켜야 한다. 기존의 cmd와 다른 부분이라 처음 접할 때 실수를 많이 한다.
나쁜 예
PS C:ScriptTest> Select-IPAddress.ps1
위와 같이 파일 이름만 입력 하면 다음과 같은 에러를 보게 될 것이다.
‘Select-IPAddress.ps1’ 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름
이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 확인한 다음 다시 시도하십시오.
위치 줄:1 문자:21
+ Select-IPAddress.ps1 <<<<
+ CategoryInfo : ObjectNotFound: (Select-IPAddress.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
좋은 예
PS C:ScriptTest> .Select-IPAddress.ps1
PS C:ScriptTest> C:ScriptTestSelect-IPAddress.ps1
.Select-IPAddress.ps1 에서 . 은 현재 위치를 의미 한다.
참고
Current Directory (현재 디렉토리): . Parent Directory (상위 디렉토리): .. Root Directory (최상위 디렉토리): / Home Directory (홈 디렉토리): ~
필요한 정보라 내용을 퍼갑니다~
원문 경로 페이지에 남겼습니다~~
좋은 정보 감사합니다.
좋은 정보 감사합니다.
근데,
마지막 좋은 예 경로가 틀렸네요.