about_Using
간단한 설명
세션에서 사용할 네임스페이스를 지정할 수 있습니다.
자세한 설명
이 using
문을 사용하면 세션에서 사용할 네임스페이스를 지정할 수 있습니다.
네임스페이스를 추가하면 .NET 클래스 및 멤버의 사용이 간소화되고 스크립트 모듈 및 어셈블리에서 클래스를 가져올 수 있습니다.
문은 using
스크립트 또는 모듈의 다른 문 앞에 와야 합니다. 매개 변수를 포함하여 주석 처리되지 않은 문이 앞에 섰을 수 없습니다.
문에는 using
변수가 없어야 합니다.
문은 using
변수에 using:
대한 범위 한정자와 동일하지 않습니다. 자세한 내용은 about_Remote_Variables 참조하세요.
네임스페이스 구문
.NET 네임스페이스에서 형식을 확인하려면 다음을 수행합니다.
using namespace <.NET-namespace>
네임스페이스를 지정하면 짧은 이름으로 형식을 보다 쉽게 참조할 수 있습니다.
예제 - typename 확인을 위한 네임스페이스 추가
다음 스크립트는 "헬로 월드" 문자열에 대한 암호화 해시를 가져옵니다.
에 대한 using namespace System.Text
참조 및 using namespace System.IO
단순화 방법을 확인합니다 [Stream]
System.IO
[UnicodeEncoding]
System.Text
[MemoryStream]
.
using namespace System.Text
using namespace System.IO
[string]$string = "Hello World"
## Valid values are "SHA1", "SHA256", "SHA384", "SHA512", "MD5"
[string]$algorithm = "SHA256"
[byte[]]$stringBytes = [UnicodeEncoding]::Unicode.GetBytes($string)
[Stream]$memoryStream = [MemoryStream]::new($stringBytes)
$getFileHashSplat = @{
InputStream = $memoryStream
Algorithm = $algorithm
}
$hashFromStream = Get-FileHash @getFileHashSplat
$hashFromStream.Hash.ToString()
모듈 구문
PowerShell 모듈에서 클래스 및 열거형을 로드하려면 다음을 수행합니다.
using module <module-name>
값 <module-name>
은 모듈 이름, 전체 모듈 사양 또는 모듈 파일 경로일 수 있습니다.
경로인 경우 <module-name>
경로는 정규화되거나 상대적일 수 있습니다. 상대 경로는 문이 있는 스크립트를 기준으로 확인됩니다 using
.
이름 또는 모듈 사양인 경우 <module-name>
PowerShell은 PSModulePath에서 지정된 모듈을 검색합니다.
모듈 사양은 다음 키가 있는 해시 테이블입니다.
ModuleName
- 필수 모듈 이름을 지정합니다.GUID
- 선택 사항 모듈의 GUID를 지정합니다.- 또한 아래 세 가지 키 중 하나 이상을 지정해야 합니다 .
ModuleVersion
- 모듈의 허용 가능한 최소 버전을 지정합니다.MaximumVersion
- 모듈의 허용되는 최대 버전을 지정합니다.RequiredVersion
- 모듈의 정확한 필수 버전을 지정합니다. 다른 버전 키에는 사용할 수 없습니다.
Import-Module
문은 #requires
모듈에서 정의한 대로 모듈 함수, 별칭 및 변수만 가져옵니다. 클래스 및 열거형은 가져오지 않습니다.
이 문은 스크립트 모듈 또는 이 using module
진 모듈의 루트 모듈(ModuleToProcess
)에서 클래스 및 열거형을 가져옵니다. 중첩된 모듈 또는 루트 모듈에 점 소스가 지정된 스크립트에 정의된 클래스 또는 열거형을 일관되게 가져오지 않습니다. 루트 모듈에서 직접 모듈 외부의 사용자가 사용할 수 있도록 하려는 클래스 및 열거형을 정의합니다.
스크립트 모듈을 개발하는 동안 코드를 변경한 다음 Force 매개 변수를 사용하여 Import-Module
모듈의 새 버전을 로드하는 것이 일반적입니다. 이는 루트 모듈의 함수 변경에 대해서만 작동합니다. Import-Module
는 중첩된 모듈을 다시 로드하지 않습니다. 또한 업데이트된 클래스 또는 열거형을 로드할 수 있는 방법은 없습니다.
최신 버전을 실행하려면 새 세션을 시작해야 합니다.
PowerShell에서 정의되고 문으로 using
가져온 클래스 및 열거형은 언로드할 수 없습니다.
예제 - 스크립트 모듈에서 클래스 로드
이 예제에서 CardGames라는 PowerShell 스크립트 모듈은 다음 클래스를 정의합니다.
- 테크
- 카드
Import-Module
문은 #requires
모듈에서 정의한 대로 모듈 함수, 별칭 및 변수만 가져옵니다. 클래스는 가져오지 않습니다. 이 using module
명령은 모듈을 가져오고 클래스 정의도 로드합니다.
using module CardGames
[Deck]$deck = [Deck]::new()
$deck.Shuffle()
[Card[]]$hand1 = $deck.Deal(5)
[Card[]]$hand2 = $deck.Deal(5)
[Card[]]$hand3 = $deck.Deal(5)
어셈블리 구문
다음 구문은 실행 시작 시 어셈블리에서 스크립트로 .NET 형식을 로드합니다. 어셈블리 파일에 대한 정규화된 경로를 사용해야 합니다.
using assembly <.NET-assembly-path>
이 using assembly
문은 cmdlet을 Add-Type
사용하는 것과 유사합니다.
그러나 cmdlet은 Add-Type
스크립트 실행이 시작될 때가 아니라 실행될 때 Add-Type
형식을 추가합니다. 자세한 내용은 추가 형식을 참조 하세요.
예제 - 어셈블리에서 형식 로드
다음은 데이터를 처리할 때 해당 클래스를 사용할 수 있도록 어셈블리를 로드하는 예제입니다. 다음 스크립트는 데이터를 YAML 형식으로 변환합니다.
using assembly './YamlDotNet.dll'
using namespace YamlDotNet
$yamlSerializer = [Serialization.Serializer]::new()
$info = [ordered]@{
Inventory = @(
@{ Name = 'Apples' ; Count = 1234 }
@{ Name = 'Bagels' ; Count = 5678 }
)
CheckedAt = [datetime]'2023-01-01T01:01:01'
}
$yamlSerializer.Serialize($info)
Inventory:
- Name: Apples
Count: 1234
- Name: Bagels
Count: 5678
CheckedAt: 2023-01-01T01:01:01.0000000
PowerShell