Language/PowerShell | 2020. 9. 15. 13:37

PowerShell


본 시리즈에서는 PowerShell의 구체적인 사용에 대해 정리한다.

이전 게시글: [PowerShell] C#의 using 키워드 구현하기

 

OpenFileDialog / SaveFileDialog 사용하기


PowerShell에서는 .NET Framework의 WinForm 구성 요소인 System.Windows.Forms.OpenFileDialogSystem.Windows.Forms.SaveFileDialog를 가져와서 연동할 수 있다.

OpenFileDialog를 사용하여 파일 열기 대화상자를 띄우는 코드는 다음과 같다. SaveFileDialog도 이와 다르지 않다.

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog.InitialDirectory = [System.String]::Empty
$openFileDialog.Filter = "All Files (*.*)|*.*"
$openFileDialog.ShowDialog()

 

위 코드를 보다 자세히 분해하여 보겠다.

 

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

이것은 컴퓨터에 설치된 .NET Framework 어셈블리 중에서 System.Windows.Forms라는 이름의 어셈블리를 찾아서 로드하라는 뜻이다. 자세한 내용은 MSDN을 참고하며, 성공하면 현재의 프로그램에 어셈블리가 로드되어 이를 사용할 수 있고 해당 어셈블리에 대해 System.Reflection.Assembly형 객체를 반환한다. 반환값에 대해서 여기에서는 사용하지 않고 그냥 버린다. 만일 실패할 경우 null이 반환될 것이다.

 

$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog

C# 방식으로는 var openFileDialog = new System.Windows.Forms.OpenFileDialog() 정도로 이해할 수 있다. 파일 열기 대화상자 객체를 새로 만든다.

 

$openFileDialog.InitialDirectory = [System.String]::Empty
$openFileDialog.Filter = "All Files (*.*)|*.*"
$openFileDialog.ShowDialog()

나머지는 OpenFileDialog의 reference에 따라 구성된 내용이다. 특히 InitialDirectory 프로퍼티는 대화상자가 맨 처음 열릴 때 보여질 폴더의 경로를 지정하는데, 기본값은 빈 문자열이다. 특정 경로를 보일 것이라면, 그 경로명을 지정하면 된다.

댓글