카테고리 없음
POWERSHELL SCRIPT - 스크립트의 기능 문서화
뚱땡이 우주인
2018. 7. 1. 14:08
스크립트의 기능 문서화
'자세한 정보'를 특정 단계별로 출력하도록 내부 메시지를 보기 위해서는 명령을 실행할 때 -Verbose 스위치를 붙이면 된다.
Test-NetConnection -ComputerName www.microsoft.com -Verbose
Write-Verbose
Write-Verbose -Message "자세한 정보 표시"
위 명령은 대화식 실행과 같은 일부 시나리오에서만 적용하는 것이 좋으며 가능한 사용을 줄이는 것이 좋다. 스크립트의 실행 과 정에 정보를 표시하는 용도로 사용하라고 만들어 놓은 명령이다.
위 명령은 스크립트에서 제공하는 기능을 문서화하는데 이용할 수 있다.
function ConverTo-InchToMeter { [CmdletBinding()] Param ( [Parameter(Mandatory = $true)] [int]$Inch ) BEGIN { #인치를 미터로 변환하는 개수 $Const = 2.54 } PROCESS { Write-Verbose -Message "변환할 인치 (in) : $Inch" Write-Verbose -Message "인치를 미터로 변환합니다." $result = ($Inch * $Const) / 100 Write-Verbose -Message "변환 결과 (m) : $result" } End { } } # 결과 PS> ConverTo-InchToMeter -Inch 30 -verbose 자세한 정보 표시: 변환할 인치 (in) : 30 자세한 정보 표시: 인치를 미터로 변환합니다. 자세한 정보 표시: 변환 결과 (m) : 0.762
주석 기반 도움말
function Get-SecurityEvents {
<#
.SYNOPSIS
컴퓨터의 보안에 로그 대한 감사 정보를 가져온다.
.DESCRIPTION
이벤트 뷰어의 Windows 로그아래에서 보안 감사 로그를 대상으로 한다.
계정 로그인/로그오프 등의 감사 로그 내용을 가져온다.
.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 7
}
END {}
}
- <# ~ #> : 주석 블록 표시
- .SYNOPSIS : 주석의 줄거리
- .DESCRIPTION : 함수나 스크립트의 기능에 대한 자세한 설명
- .PARAMETER : 함수나 스크립트에서 사용하는 매개변수 정보. 매개변수 개수만큼 반복
- .EXAMPLE : 사용 방법에 대한 예제. 예제 개수만큼 반복한다.
Get-Help Get-SecurityExample -detailed
Send-OutllokMail에 도움말과 자세한 정보 추가하기
function Send-OutlookMail{
<#
.SYNOPSIS
Outlook.com의 SMTP를 이용해 메일을 발송한다.
.DESCRIPTION
Outlook.com 서비스에서 제공하는 SMTP를 이용해 PowerShell에서 메일을 보낼 수 있다.
SMTP 서버는 ‘smtp.live.com’이며 포트는 587이다.
이 기능은 Microsoft의 계정이 필요하다.
.PARAMETER From
보내는 사람
.PARAMETER To
받는 사람
.PARAMETER Cc
참조 수신자
.PARAMETER Subject
메일 제목
.PARAMETER Body
메일 본문 내용
.EXAMPLE
Send-OutlookMail -To recipient@anymail.com -Subject “메일 제목” -Body “메일 본문”
.EXAMPLE
Send-OutlookMail -From sender@outlook.com -To recipient@anymail.com
-Subject “메일 제목” -Body “메일 본문”
.EXAMPLE
Send-OutlookMail -From sender@outlook.com -To recipient@anymail.com
-Subject “메일 제목” -Body “메일 본문” -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string] $From = "김도균 <kimdokyun@outlook.com>",
[Parameter(Mandatory=$True)]
[string] $To,
[Parameter(Mandatory=$False)]
[string] $Cc = "steelflea@outlook.com",
[Parameter(Mandatory=$True)]
[string] $Subject,
[Parameter(Mandatory=$False)]
[string] $Body = "PowerShell에서 보낸 메일"
)
BEGIN
{
Write-Verbose "Outlook.com의 자격증명을 입력 받는다."
$Cred = (Get-Credential)
$SmtpSvr=“smtp.live.com”
$SmtpPort="587"
}
PROCESS
{
Write-Verbose "'$To'에게 '$Subject'제목의 메일을 발송한다."
Send-MailMessage -From $From -To $To -Cc $Cc -Subject $Subject `
-Body $Body -SmtpServer $SmtpSvr -Port $SmtpPort -UseSsl `
-Credential $Cred -Encoding UTF8
}
END
{
Write-Verbose "저장된 자격증명을 지운다."
Clear-Variable -Name Cred
}
}