PowerShell
본 시리즈에서는 PowerShell의 구체적인 사용에 대해 정리한다.
이전 게시글: [PowerShell] C#의 using 키워드 구현하기
OpenFileDialog / SaveFileDialog 사용하기
PowerShell에서는 .NET Framework의 WinForm 구성 요소인 System.Windows.Forms.OpenFileDialog
과 System.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
프로퍼티는 대화상자가 맨 처음 열릴 때 보여질 폴더의 경로를 지정하는데, 기본값은 빈 문자열이다. 특정 경로를 보일 것이라면, 그 경로명을 지정하면 된다.