■ Hyper-V 서비스를 사용하는 방법을 보여준다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
$DisplayName = 'Hyper-V 가상 컴퓨터 관리' $HostName = 'kingdom' $Service = Get-Service -DisplayName $DisplayName -ErrorAction SilentlyContinue if(-not $Service) { $DisplayName + '는' + $HostName + '에 설치되지 않습니다.' Write-Host 'Hyper-V 서비스를 설치합니다.' Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All } elseif($Service.Status -eq "Running") { $DisplayName + '가 실행중입니다.' } else { $DisplayName + '가 중지되어 있습니다.' Start-Service -Name $Service.Name } |
■ .NET 클래스의 정적 속성을 사용하는 방법을 보여준다. ▶ 실행 명령
|
$CurrentDate = [System.DateTime]::Now $CurrentDate.ToString('yyyy-MM-dd') |
■ if문을 사용하는 방법을 보여준다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
$CurrentDate = [System.DateTime]::Now $StartDate = New-Object System.DateTime -ArgumentList 2021,3,1 $EndDate = New-Object System.DateTime -ArgumentList 2021,4,30 if($CurrentDate -lt $StartDate) { Write-Host "현재 일시가 시작일시보다 작습니다." } elseif($CurrentDate -gt $EndDate) { Write-Host "현재 일시가 종료일보다 큽니다." } else { Write-Host "현재 일시가 해당 기간에 포함됩니다." } |
■ 주석 기반 도움말을 사용하는 방법을 보여준다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
function Get-SecurityEvents { <# .SYNOPSIS 컴퓨터의 보안 로그 감사 정보를 가져온다. .DESCRIPTION 이벤트 뷰어의 윈도우즈 로그에서 보안 감사 로그를 대상으로 한다. 계정 로그인/로그오프 등의 감사 로그 내용을 가져온다. .PARAMETER ComputerName 로그를 가져올 컴퓨터명 .PARAMETER EventID 보안 로그에서 원하는 이벤트의 ID .EXAMPLE Get-SecurityEvents -ComputerName MyComputer .EXAMPLE Get-SecurityEvents -ComputerName MyComputer -EventID 4634 .EXAMPLE Get-SecurityEvents -ComputerName MyComputer -EventID 4634 -Verbose #> [CmdletBinding()] Param ( [Parameter(Position = 0, Mandatory = $True)][string]$ComputerName, [int]$EventID = 4634 ) BEGIN { Write-Verbose -Message '로그명을 입력받는다.' $LogName = Read-Host "로그명을 입력해 주시기 바랍니다." } PROCESS { Write-Verbose -Message "'$ComputerName'에서 '$LogName' 로그를 가져온다." Get-EventLog -ComputerName $ComputerName -LogName $LogName | Where-Object -Property EventID -eq $EventID | Select-Object -First 10 } END { } } Get-Help Get-SecurityEvents -Detailed |
■ Write-Verbose 명령을 사용하는 방법을 보여준다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
function ConvertTo-InchToMeter { [CmdletBinding()] Param ( [Parameter(Mandatory = $True)] [int]$Inch ) BEGIN { $Ratio = 2.54 } PROCESS { Write-Verbose -Message "SOURCE INCH : $Inch" Write-Verbose -Message 'INCH WILL BE CONVERTED TO METER.' $Meter = ($Inch * $Ratio) / 100 Write-Verbose -Message "TARGET METER : $Meter" } END { } } ConvertTo-InchToMeter -Inch 30 -Verbose |
■ 문자열에서 ` 기호를 사용해 탭 문자를 사용하는 방법을 보여준다. ▶ 실행 명령
|
$var = "테스트 문자열 1`t테스트 문자열 2" $var |
■ 문자열에서 ` 기호를 사용해 개행하는 방법을 보여준다. ▶ 실행 명령
|
$var = "테스트 문자열 1`n테스트 문자열 2" $var |
■ Set-Location 명령에서 -Path 스위치를 사용해 현재 위치를 변수 저장소로 변경하는 방법을 보여준다. ▶ 실행 명령
|
Set-Location -Path Variable: |
■ 특정 디렉토리에서 첫번째 텍스트 파일을 읽는 방법을 보여준다. ▶ 실행 명령
|
$File = Get-ChildItem -Path d:\*.txt -File | Select-Object -First 1 $Content = Get-Content -Path $File.FullName -Encoding UTF8 $Content |
■ Write-Verbose 명령에서 -Message 스위치를 사용해 상태 메시지를 출력하는 방법을 보여준다. ▶ 실행 명령
|
Write-Verbose -Message '자세한 정보 표시' |
■ Test-NetConnection 명령에서 -ComputerName/-Verbose 스위치를 사용해 Ping 테스트하는 방법을 보여준다. ▶ 실행 명령
|
Test-NetConnection -ComputerName www.microsoft.com -Verbose |
■ Get-Content 명령을 사용해 환경 변수 값을 구하는 방법을 보여준다. ▶ 실행 명령
|
Get-Content Env:\PSModulePath |
■ Get-Help 명령에서 -ShowWindow 스위치를 사용해 범위 도움말을 조회하는 방법을 보여준다. ▶ 실행 명령
|
Get-Help about_scope -ShowWindow |
■ 함수를 만드는 방법을 보여준다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
function Get-SecurityEvents { [CmdletBinding()] Param ( [Parameter(Position = 0, Mandatory = $True)][string]$ComputerName, [int]$EventID = 4634 ) BEGIN { $LogName = Read-Host "로그명을 입력해 주시기 바랍니다." } PROCESS { Get-EventLog -ComputerName $ComputerName -LogName $LogName | Where-Object -Property EventID -eq $EventID | Select-Object -First 10 } END { } } Get-SecurityEvents -ComputerName kingdom |
■ 함수 리스트를 구하는 방법을 보여준다. ▶ 실행 명령
|
Set-Location -Path Function: Get-ChildItem |
■ Send-MailMessage 명령을 사용해 메일을 보내는 방법을 보여준다. ▶ 실행 명령
|
Send-MailMessage ` -From '홍길동 <test@outlook.com>' ` -To 'icodebroker@naver.com' ` -Subject '테스트 메일' ` -Body '테스트 메일 입니다.' ` -SmtpServer 'smtp.live.com' ` -Port 587 ` -UseSsl ` -Credential (Get-Credential) ` -Encoding UTF8 |
■ 스크립트 파일을 실행하는 방법을 보여준다. ▶ test.ps1
|
[CmdletBinding()] Param ( [Parameter(Mandatory = $True)] [string]$ComputerName, [int]$EventID = 4634 ) Get-EventLog -LogName Security -ComputerName $ComputerName | Where-Object EventID -eq $EventID | Select-Object -First 10 |
▶ 실행
|
PS D:\script> .\test.ps1 -ComputerName kingdom |
■ Get-EventLog 명령에서 -LogName/-ComputerName 스위치를 사용해 로그오프 성공 이벤트 리스트를 구하는 방법을 보여준다. ▶ 실행 명령
|
Get-EventLog -LogName Security -ComputerName kingdom | Where-Object EventID -eq 4634 | Select-Object -First 10 |
■ Get-ChildItem 명령에서 -Path/-File 스위치를 사용해 특정 경로 파일 리스트를 구하는 방법을 보여준다. ▶ 실행 명령
|
Get-ChildItem -Path d:\ -File |
■ Get-Command 명령에서 -Noun 스위치를 사용해 변수 관련 명령 리스트를 구하는 방법을 보여준다. ▶ 실행 명령
|
Get-Command -Noun Variable |
■ Set-Variable 명령에서 -Name/-Value 스위치를 사용해 변수 값을 설정하는 방법을 보여준다. ▶ 실행 명령
|
$value = '월요일' Set-Variable -Name value -Value '화요일' $value |
■ Set-ExecutionPolicy 명령에서 -ExecutionPolicy 스위치를 사용해 실행 정책을 설정하는 방법을 보여준다. ▶ 실행 명령
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned |
■ Get-ExecutionPolicy 명령을 사용해 실행 정책을 구하는 방법을 보여준다. ▶ 실행 명령
■ Invoke-Command 명령에서 -ComputerName/-ScriptBlock 스위치를 사용해 원격 명령을 실행하는 방법을 보여준다. ▶ 실행 명령
|
$ServiceName = "WinRM" Invoke-Command -ComputerName "127.0.0.1" -ScriptBlock {Get-Service -Name $ServiceName} |
■ -ComputerName 스위치를 사용하는 방법을 보여준다. ▶ 실행 명령
|
-ComputerName ONE,TWO,THREE -Credential king -ComputerName (Get-Content d:\computerName.txt) -Credential king -ComputerName (Import-Csv d:\computerName.csv | Select-Object -Expand Computer) -Credential king |