Резюме: Microsoft PFE Adam Haynes и Shubert Somer рассказывают об использовании класса .NET Framework для открытия диалогового окна.
Microsoft Scripting Guy Ed Wilson на связи. Сегодня я публикую пятую, завершающую, часть из серии статей, написанных Adam Haynes с некоторой помощью его друга Shubert Somer. Перед прочтением данной статьи рекомендуется ознакомиться с частью 1, частью 2, частью 3 и частью 4.
Итак, Адам.
[reflection.assembly]::loadwithpartialname(«System.Windows.Forms») | Out-Null
$openFile = New-Object System.Windows.Forms.OpenFileDialog
$openFile.Filter = «txt files (.txt)|.txt|All files (.)|.»
If($openFile.ShowDialog() -eq «OK»
{get-content $openFile.FileName}
Я полагаю, что Шуберт подробно объяснил первую строку скрипта, так что мы можем двигаться дальше.
В строке 3 мы используем командлет New-Object поскольку, как мы говорили в предыдущих статьях, нам нужно создать экземпляр объекта класса OpenFileDialog. Чтобы освежить в памяти информацию о конструкторах, можете перечитать объяснения Шуберта в части 2.
Строка 4 фактически скопирована с сайта MSDN. Я пытался разобраться со свойством Filter и натолкнулся на страницу с примером его использования.
Для того, чтобы написать строку 6 мне понадобилось несколько попыток, пока я не разобрался с объектом (как вы помните – это объект, поскольку мы использовали командлет New-Object). После того, как я получил объект класса OpenFileDialog, я стал пробовать методы, представленные на MSDN (а также полученные посредством командлета Get-Member), чтобы узнать, что они делают. Метод ShowDialog() показался мне довольно многообещающим и фактически именно он и был мне нужен.
Метод ShowDialog() возвращает одно из значений перечислителя DialogResult, которое может быть равным OK, либо Cancel. Помните, мы говорили о перечислителях в части 3? И как же я узнал, что возвращается именно значение перечислителя? Потому что так написано на MSDN. Здесь присутствует некий побочный эффект в виде того, что перед тем как нажать OK, вам придется выбрать файл, что дает нам некоторое преимущество в части верификации ввода. После того как пользователь выберет файл и нажмет OK, мы фактически передаем путь к файлу командлету Get-Content в строке 8. Я не думаю, что имеет смысл использовать .NET Framework для чтения файла, когда для этого есть командлет.
Стоит также заметить, что в строке 6 мы вполне могли заменить [System.Windows.Forms.DialogResult]::OK на OK, и Windows PowerShell все равно понял бы, что мы хотим, однако таким образом мы бы упустили возможность освежить в памяти информацию о перечислителях.
Я надаюсь что к этому моменту вы уже обладаете некой целостной картиной и это побудит вас иногда заглядывать на MSDN пробовать нечто из приведенного в этой серии статей. Прелесть использования .NET Framework в Windows PowerShell состоит в том, что для этого вам не требуется каких-то особых знаний о программировании или навыков использования Visual Studio. Как Шуберт сказал в предыдущем посте, одно и то же можно сделать несколькими способами. Что ж, если определенный способ вам подходит, значит это правильный способ.
Теперь, когда вы обладаете некоторыми знаниями, мы рекомендуем вам заглянуть в .NET Framework Class Library. Для начала, выберите знакомое вам пространство имен. Например я знаю Active Directory, поэтому это то, откуда я начал знакомство с .NET. Если вы хорошо разбираетесь в Exchange или SharePoint, начните с этих технологий. Выберите что угодно, вне зависимости от того, пригодится ли это вам прямой сейчас или нет, и попробуйте с ним поработать. Просто начните разбираться во всеми методами и свойствами вашего нового объекта.
Вы когда-нибудь разговаривали с PowerShell? Я использую это, когда мне становится скучно.
[reflection.assembly]::loadwithpartialname(«System.Speech») | Out-Null
$SayIt = New-Object system.Speech.Synthesis.SpeechSynthesizer
$SayIt.Speak(«.Net and PowerShell are cooler than cool»)
Попробуйте разобраться в этом скрипте самостоятельно, используя все то, о чем мы здесь говорили, затем загляните на MSDN, чтобы узнать, как вы можете сменить голос, пол или возраст. Основная идея в том, чтобы делать что-то, не обязательно важное, и получать от этого удовольствие. Когда от вас потребуется, вы сможете показать ваши навыки и умения вашему руководству. Скажите, что вас послал Microsoft Premier.
~Adam.
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell