다음을 통해 공유


Set-FileLabel

레이블 구성 또는 사용자 지정 권한에 따라 수동 레이블 지정 또는 자동 레이블 지정을 통해 파일에 대한 민감도 레이블 및 보호를 설정합니다.

구문

SetLabel

Set-FileLabel
    [-Path] <String[]>
    -LabelId <Guid>
    [-JustificationMessage <String>]
    [-Owner <String>]
    [-PreserveFileDetails]

SetLabelCustom

Set-FileLabel
    [-Path] <String[]>
    -LabelId <Guid>
    -CustomPermissions <AIPCustomPermissions>
    [-JustificationMessage <String>]
    [-Owner <String>]
    [-PreserveFileDetails]

Custom

Set-FileLabel
    [-Path] <String[]>
    -CustomPermissions <AIPCustomPermissions>
    [-Owner <String>]
    [-PreserveFileDetails]

SetAutoLabel

Set-FileLabel
    [-Path] <String[]>
    [-JustificationMessage <String>]
    [-Owner <String>]
    [-Force]
    [-PreserveFileDetails]
    [-AutoLabel]

WhatIf

Set-FileLabel
    [-Path] <String[]>
    [-PreserveFileDetails]
    [-WhatIf]
    [-DiscoveryInfoTypes <String[]>]

Description

Microsoft Purview Information Protection 클라이언트의 경우 Set-FileLabel cmdlet은 하나 이상의 파일에 대한 민감도 레이블을 설정합니다. 이 작업은 레이블이 암호화를 적용하도록 구성된 경우 자동으로 보호를 적용할 수 있습니다.

또한 이 cmdlet을 사용하여 New-CustomPermissions cmdlet을 사용하여 임시 보호 정책 개체로 만들 때 사용자 지정 권한을 적용할 수 있습니다.

명령이 성공적으로 실행되면 기존 레이블 또는 보호를 바꿀 수 있습니다.

비대화형으로 이 cmdlet을 실행할 수 있습니다. 자세한 내용은 통합 레이블 지정 클라이언트 관리자 가이드를 참조하세요.

예제

예제 1: 현재 레이블이 없는 모든 파일에 "일반" 레이블 적용

Get-FileStatus -Path \\Finance\Projects\ |
    Where-Object {$_.IsLabeled -eq $False} |
    Set-FileLabel -LabelId d9f23ae3-4321-4321-4321-f515f824c57b
FileName                              Status Comment
--------                              ------ ------------
\\Finance\Projects\Image.jpg          Success
\\Finance\Projects\Pricelist.pdf      Success
\\Finance\Projects\Announcement.docx  Success
\\Finance\Projects\Analysis.xlsx      Success

이 명령은 먼저 Get-FileStatus cmdlet을 사용하여 레이블이 지정되지 않은 모든 파일을 식별합니다. 그런 다음 이러한 파일은 ID로 "일반" 레이블을 지정하여 레이블이 지정됩니다.

예제 2: 레이블이 지정되지 않은 .docx 파일에 "일반" 레이블 적용

Get-ChildItem C:\Projects\*.docx -File -Recurse |
    Get-FileStatus |
    Where-Object {$_.IsLabeled -eq $False} |
    Set-FileLabel -LabelId d9f23ae3-1234-1234-1234-f515f824c57b
FileName                   Status  Comment
--------                   ------  ------------
C:\Projects\Analysis.docx  Success
C:\Projects\Projects.docx  Success

이 명령은 먼저 .docx을 사용하여 폴더(및 해당 하위 폴더)의 C:\Projects 모든 파일을 식별한 다음 cmdlet을 Get-FileStatus 사용하여 레이블이 지정되지 않은 파일을 이러한 파일에서 찾습니다. 그런 다음 결과 파일은 해당 ID로 General 레이블을 지정하여 레이블을 지정합니다.

비고

이 명령은 Get-Child-Item을 .Get-FileStatus

예제 3: 폴더의 모든 파일과 해당 하위 폴더에 "일반" 레이블 적용

Set-FileLabel -Path C:\Projects\ -LabelId d9f23ae3-1324-1234-1234-f515f824c57b
FileName                    Status      Comment
--------                    ------      ------------
C:\Projects\Project1.docx   Success
C:\Projects\Datasheet.pdf   Success
C:\Projects\Image.jpg       Success
C:\Projects\Analysis.xlsx   Skipped    No label to apply
C:\Projects\Dashboard.xlsx  Success

이 명령은 폴더 및 해당 하위 폴더의 모든 파일에 C:\Projects 대해 "일반"이라는 레이블을 설정합니다.

일반 레이블이 암호화를 적용하도록 구성된 경우 이 명령으로 레이블이 성공적으로 지정된 파일도 암호화됩니다. 이 경우 이러한 파일의 권한 관리 소유자(권한 관리 모든 권한 권한이 있는 사람)는 PowerShell 명령을 실행한 사용자입니다.

이 예제에서는 한 파일에 근거가 필요하므로 레이블이 지정되지 않았습니다(건너뛰기). 이는 분류 레이블 또는 보호가 높은 파일이 실수로 더 낮은 분류 레이블로 덮어쓰여지지 않거나 보호가 제거되지 않도록 하기 위한 결과일 수 있습니다.

이 보호 기능을 사용하려면 레이블을 제거하거나 분류를 낮추기 위한 근거를 요구하도록 Office 365 분류 레이블 정책을 구성해야 합니다. 그런 다음 JustificationMessage 매개 변수 없이 이 명령을 실행하고 레이블이 근거를 트리거하면 파일은 "적용할 레이블 없음" 주석으로 건너뜁니다.

예제 4: "일반" 레이블을 단일 파일에 적용합니다. 이 경우 정당성이 필요합니다.

$setFileLabelSplat = @{
    Path = '\\Finance\Projects\Analysis.xlsx'
    LabelId = 'd9f23ae3-1324-1234-1234-f515f824c57b'
    JustificationMessage = 'The previous label no longer applies'
}
Set-FileLabel @setFileLabelSplat
FileName                          Status      Comment
--------                          ------      ------------
\\finance\projects\analysis.xlsx  Success

이 명령은 이미 높은 민감도 레이블로 레이블이 지정된 파일에 대해 "일반" 레이블을 설정합니다. 민감도 레이블 정책은 레이블을 제거하거나 분류를 낮추기 위한 근거를 요구하도록 구성됩니다. 명령에 근거 메시지가 포함되어 있으므로 새 레이블이 성공적으로 적용됩니다.

예제 5: 사용자 지정 권한으로 파일 보호

$newCustomPermissionsSplat = @{
    Users = 'user1@contoso.com', 'user2@vanarsdel.com'
    Permissions = 'Reviewer'
    ExpirationDate = (Get-Date -Month 1 -Day 1 -Year 2020)
}
$permissions = New-CustomPermissions @newCustomPermissionsSplat
Set-FileLabel C:\Projects\Analysis.docx -CustomPermissions $permissions
FileName                   Status Comment
--------                   ------ ------------
C:\Projects\Analysis.docx  Success

첫 번째 명령은 검토자 권한에서 다른 조직의 사용 권한을 사용자에게 부여하고 만료 날짜도 적용하는 임시 보호 정책 개체를 만듭니다.

두 번째 명령은 저장된 임시 보호 정책 개체의 사용자 지정 권한을 사용하여 명명된 Analysis.docx 단일 파일을 보호합니다.

예제 6: 파일에 레이블 및 사용자 지정 권한 적용

$permissions = New-CustomPermissions -Users a@a.com, b@b.com -Permissions Reviewer
$setFileLabelSplat = @{
    LabelId = 'd9f23ae3-1324-1234-1234-f515f824c57b'
    CustomPermissions = $permissions
}
Set-FileLabel @setFileLabelSplat C:\Projects\Analysis.docx
FileName                   Status Comment
--------                   ------ ------------
C:\Projects\Analysis.docx  Success

첫 번째 명령은 검토자 권한에서 다른 조직의 사용 권한을 사용자에게 부여하고 만료 날짜도 적용하는 임시 보호 정책 개체를 만듭니다.

두 번째 명령은 Analysis.docx 명명된 단일 파일에 레이블을 적용하고 저장된 임시 보호 정책 개체의 사용자 지정 권한을 사용하여 파일을 보호합니다. 레이블이 보호 설정에 대해 구성된 경우 사용자 지정 권한으로 바뀝니다.

예제 7: 폴더 트리의 모든 파일을 스캔하고 구성된 조건에 따라 레이블 적용

Set-FileLabel -AutoLabel -Path C:\Projects\ -PreserveFileDetails
FileName      : C:\Projects\Project1.docx
Status        : Success
Comment       :
MainLabelName : Confidential
MainLabelId   : 074e257c-1234-1234-1234-34a182080e71
SubLabelName  : Finance group
SubLabelId    : d9f23ae3-1234-1234-1234-f515f824c57b

FileName      : C:\Projects\Datasheet.pdf
Status        : Skipped
Comment       : No label to apply
MainLabelName :
MainLabelId   :
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Analysis.xlsx
Status        : Skipped
Comment       : No label to apply
MainLabelName :
MainLabelId   :
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Pricelist.xlsx
Status        : Skipped
Comment       : No label to apply
MainLabelName :
MainLabelId   :
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Dashboard.xlsx
Status        : Success
Comment       :
MainLabelName : Public
MainLabelId   : f018e9e7-0cfc-4c69-b27a-ac3cb7df43cc
SubLabelName  :
SubLabelId    :

이 명령은 Projects 폴더의 모든 파일과 해당 하위 폴더를 검색하고 자동 레이블 지정 정책에서 구성된 조건에 따라 레이블을 설정합니다. 이 예제에는 5개의 파일이 있고 두 개의 파일이 자동으로 레이블이 지정됩니다. Datasheet.pdf 파일의 내용이 자동 레이블 지정 Analysis.xlsx 에 대해 구성된 조건과 일치하지 않고 이미 수동으로 레이블이 지정되었으며 Pricelist.xlsx 더 높은 레이블이 있기 때문에 레이블이 지정되지 않았습니다. 명령은 Force 매개변수 없이 실행되기 때문에 및 에 Analysis.xlsx 대한 Pricelist.xlsx 기존 레이블은 덮어쓰여지지 않습니다.

적용된 레이블도 Rights Management 보호를 적용하도록 구성된 경우 이 명령으로 레이블이 성공적으로 지정된 파일도 보호됩니다. 이 경우 이러한 파일의 권한 관리 소유자(권한 관리 모든 권한 권한이 있는 사람)는 PowerShell 명령을 실행한 사용자입니다.

PreserveFileDetails 매개 변수가 지정되었기 때문에 레이블이 지정된 파일의 수정된 날짜는 변경되지 않은 상태로 유지됩니다.

예제 8: 폴더 트리의 모든 파일을 스캔하고 구성된 조건에 따라 레이블을 적용하여 기존 레이블을 재정의합니다.

Set-FileLabel -Autolabel -Path C:\Projects\ -Force -PreserveFileDetails
FileName      : C:\Projects\Project1.docx
Status        : Success
Comment       :
MainLabelName : Confidential
MainLabelId   : 074e257c-1234-1234-1234-34a182080e71
SubLabelName  : Finance group
SubLabelId    : d9f23ae3-1234-1234-1234-f515f824c57b

FileName      : C:\Projects\Datasheet.pdf
Status        : Skipped
Comment       : No label to apply
MainLabelName :
MainLabelId   :
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Analysis.xlsx
Status        : Success
Comment       :
MainLabelName : Public
MainLabelId   : f018e9e7-0cfc-4c69-b27a-ac3cb7df43cc
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Pricelist.xlsx
Status        : Success
Comment       :
MainLabelName : Public
MainLabelId   : f018e9e7-0cfc-4c69-b27a-ac3cb7df43cc
SubLabelName  :
SubLabelId    :

FileName      : C:\Projects\Dashboard.xlsx
Status        : Success
Comment       :
MainLabelName : Public
MainLabelId   : f018e9e7-0cfc-4c69-b27a-ac3cb7df43cc
SubLabelName  :
SubLabelId    :

이 명령은 Projects 폴더 및 해당 하위 폴더의 모든 파일도 검색하고 자동 레이블 지정을 위해 구성된 조건에 따라 레이블을 설정한다는 이전 예제와 유사합니다. 그러나 이번에는 명령에 Force 매개 변수가 포함되어 있기 때문에 , 및 Dashboard.xlsx에 대한 Pricelist.xlsx기존 레이블도 대체합니다.

Datasheet.pdf 내용이 구성된 조건과 일치하지 않으며 이 파일은 레이블 없이 남아 있습니다.

예제 9: 알려진 모든 중요한 정보 유형에 대한 파일 검색

Set-FileLabel -AutoLabel -Path C:\Projects\Project1.docx -DiscoveryInfoTypes All
MainLabelName           : General
MainLabelId             : 89a453df-5df4-4976-8191-jdn2fsf9560a
SubLabelName            :
SubLabelId              :
WhatIf                  : True
MatchedInformationTypes : {Credit Card Number, U.S. Social Security Number (SSN), International Classification of
                          Diseases (ICD-10-CM), International Classification of Diseases (ICD-9-CM)}
LastModifiedBy          :
LastModifiedTime        : 8/19/2014 5:11:26 AM
FileName                : C:\Projects\Project1.docx
Status                  : Success
Comment                 :

이 명령은 보호 또는 레이블을 적용하지 않고 Project1.docx 파일에서 알려진 모든 정보 유형을 검색합니다.

예제 10: 특정 중요한 정보 유형에 대한 파일 검색

$setFileLabelSplat = @{
    AutoLabel = -AutoLabel
    Path = 'C:\Projects\Project1.docx'
    DiscoveryInfoTypes = "50842eb7-edc8-4019-85dd-5a5c1f2bb085", "a44669fe-0d48-453d-a9b1-2cc83f2cba77"
}
Set-FileLabel @setFileLabelSplat
MainLabelName           : General
MainLabelId             : 89a453df-5df4-4976-8191-jdn2fsf9560a
SubLabelName            :
SubLabelId              :
WhatIf                  : True
MatchedInformationTypes : {Credit Card Number, U.S. Social Security Number (SSN)}
LastModifiedBy          :
LastModifiedTime        : 8/19/2014 5:11:26 AM
FileName                : Project1.docx
Status                  : Success
Comment                 :

이 명령은 보호 또는 레이블을 적용하지 않고 파일에서 신용 카드 번호SSN(사회 보장 번호)Project1.docx 의 특정 정보 유형을 검색합니다.

예제 11: 파일에서 특정 중요한 정보 유형을 검사하고 찾은 값을 표시합니다.

$setFileLabelSplat = @{
    AutoLabel = -AutoLabel
    Path = 'C:\Projects\Project1.docx'
    DiscoveryInfoTypes = '50842eb7-edc8-4019-85dd-5a5c1f2bb085',
        'a44669fe-0d48-453d-a9b1-2cc83f2cba77'
}
$x = Set-FileLabel @setFileLabelSplat
$x.MatchedInformationTypes
RulePackageSetId  : 00000000-0000-0000-0000-000000000000
RulePackageId     : 00000000-0000-0000-0000-000000000000
RuleId            : 50842eb7-edc8-4019-85dd-5a5c1f2bb085
Name              : Credit Card Number
Count             : 1
UniqueCount       : 1
Confidence        : 85
SensitiveContents : {Offset: 2089, Length: 19}

RulePackageSetId  : 00000000-0000-0000-0000-000000000000
RulePackageId     : 00000000-0000-0000-0000-000000000000
RuleId            : a44669fe-0d48-453d-a9b1-2cc83f2cba77
Name              : U.S. Social Security Number (SSN)
Count             : 1
UniqueCount       : 1
Confidence        : 85
SensitiveContents : {Offset: 7063, Length: 11}
$x.MatchedInformationTypes[0].SensitiveContents | Format-List
Offset  : 2089
Length  : 19
Value   : 4539-9572-7949-2212
Context : OLOGICAL SCIENCES     Credit Card #
          Expiration Date:      4539-9572-7949-2212
          8/2009                Department:     BIOLOGICAL SCIENCES     Anticipa

이전 예제와 마찬가지로 첫 번째 명령은 보호 또는 레이블을 적용하지 않고 파일에서 신용 카드 번호SSN(사회 보장 번호)Project1.docx 의 특정 정보 유형을 검색합니다. 그러나 이 예제에서는 추가 처리를 위해 결과가 변수에 저장됩니다.

그런 다음 두 번째 명령을 사용하여 SensitiveContents 매개 변수를 포함하는 일치하는 정보 형식의 내용을 표시합니다.

마지막 명령은 첫 번째 중요한 정보 유형(이 예제에서는 신용 카드 세부 정보)으로 식별되는 데이터를 더 쉽게 읽을 수 있도록 표시 및 형식을 표시합니다.

매개 변수

-AutoLabel

-AutoLabel 사용하면 cmdlet이 자동 레이블 지정 모드에서 실행됩니다. -AutoLabel cmdlet을 사용하지 않으면 수동 레이블 지정 모드에서 실행됩니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetAutoLabel
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-CustomPermissions

New-CustomPermissions cmdlet을 사용하여 만든 임시 보호 정책을 저장하는 변수 이름을 지정합니다. 임시 보호 정책은 사용자 지정 권한이 있는 파일 또는 파일을 보호하는 데 사용됩니다.

매개 변수 속성

형식:AIPCustomPermissions
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetLabelCustom
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
Custom
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-DiscoveryInfoTypes

WhatIf 매개 변수를 사용할 때 검색할 중요한 정보 유형을 지정합니다.

특정 중요한 정보 유형을 검색하려면 해당 정보 유형에 대한 엔터티 ID 번호를 지정합니다. 이 번호는 Exchange Server의 중요한 정보 유형에 나열되어 있습니다.

예를 들어 "50842eb7-edc8-4019-85dd-5a5c1f2bb085"는 신용 카드 번호 중요한 정보 유형에 대해 지정할 번호입니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

WhatIf
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Force

구성된 조건이 적용될 때 기존 레이블을 바꿉니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetAutoLabel
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-JustificationMessage

민감도 정책에 따라 사용자가 이 정보를 제공해야 하는 경우 분류 레이블을 낮추거나 레이블을 제거하거나 보호를 제거하는 이유입니다. 레이블을 설정하면 근거를 트리거하고 이러한 이유가 제공되지 않으면 레이블이 적용되지 않습니다. 이 경우 반환된 상태는 "건너뛰기"이며 주석은 "근거 필요"입니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetLabel
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
SetLabelCustom
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
SetAutoLabel
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-LabelId

적용할 레이블의 ID(ID)를 지정합니다. 레이블에 하위 레이블이 있는 경우 항상 부모 레이블이 아닌 하위 레이블의 ID를 지정합니다.

레이블 ID를 찾으려면 다음을 수행합니다.

레이블 ID 값은 Microsoft Purview 규정 준수 포털에 표시되지 않습니다. 그러나 다음 Office 365 보안 및 규정 준수 센터 PowerShell 명령을 사용하여 이 값을 찾을 수 있습니다. Get-Label | Format-Table -Property DisplayName, Name, Guid

레이블이 적용된 파일의 경우 Get-FileStatus cmdlet을 실행하여 레이블 ID(MainLabelId 또는 SubLabelId)를 식별할 수도 있습니다.

매개 변수 속성

형식:Guid
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetLabel
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
SetLabelCustom
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Owner

파일에 레이블 또는 보호를 적용하기 위한 소유자를 지정합니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SetLabel
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
SetLabelCustom
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
Custom
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False
SetAutoLabel
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Path

레이블 및 보호 정보를 가져올 파일에 대한 로컬 경로, 네트워크 경로 또는 SharePoint Server URL을 지정합니다.

와일드카드는 지원되지 않으며 WebDav 위치는 지원되지 않습니다.

SharePoint 경로의 경우 다음이 지원됩니다.

  • SharePoint 서버 2022
  • SharePoint 서버 2019
  • 셰어포인트 서버 2016
  • SharePoint 서버 2013

다음은 그 예입니다.

  • C:\Folder\
  • C:\Folder\Filename
  • \\Server\Folder
  • http://sharepoint.contoso.com/Shared%20Documents/Folder

경로 값을 따옴표로 묶을 때 경로에 공백이 포함될 수 있습니다.

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:전체 이름, 파일명

매개 변수 집합

(All)
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:True
나머지 인수의 값:False

-PreserveFileDetails

레이블이 지정된 문서에 대해 수정된 날짜(Windows 및 SharePoint)와 수정한 날짜(SharePoint) 값을 변경하지 않고 그대로 두려면 이 매개 변수를 지정합니다.

  • 로컬 또는 네트워크 파일의 경우 수정된 날짜 값은 변경되지 않은 상태로 유지됩니다.

  • SharePoint 파일의 경우 수정된 날짜값으로 수정된 날짜는 변경되지 않은 상태로 유지됩니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-WhatIf

cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

WhatIf
Position:Named
필수:True
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

입력

System.String

출력

Microsoft.InformationProtection.Powershell.AIP.Results.SetAIPFileResult

참고

루프에서 cmdlet을 Set-FileLabel 실행하는 경우 cmdlet 뒤에 다음 명령을 추가합니다.

  • [GC]::Collect()
  • [GC]::WaitForPendingFinalizers()

이러한 명령은 가비지 수집기가 실행되고 더 이상 필요하지 않은 메모리를 해제하도록 합니다.