dilemas de um desenvolvedor .net na terra do powershell
TRANSCRIPT
MVP Open Days 201513 e 14 de Março – São Paulo
#MVPBR
Dilemas de um desenvolvedor.NET na Terra do PowerShellIgor Abade V. Leite - @igorabade
Microsoft MVP, Visual Studio ALM
Agenda
• PowerShell
• Visual Studio
• ... E mais algumas coisas entre os dois
• Mas não é só isso!
• Espero atender a Devs e ITPros
Motivação
MVP Open Days 2015
Por que PowerShell?
•Consultoria ALM – TFS e afins•Um monte de coisas repetitivas
•Hora de criar scripts!•CMD?
• .NET?
•PowerShell!
MVP Open Days 2015
Por que PowerShell?
•O que tem de pronto?•TFS Power Tools
•PsTFS: pstfs.codeplex.com
•TfDash: bitbucket.org/Sumo/tfdash
•Nada muito abrangente. Alternativa?•API TFS
.NET ou PowerShell?
MVP Open Days 2015
.NET ou PowerShell?
MVP Open Days 2015
Cmdlet? Function?
Elemento .NET PowerShell
Comando
(unidade básica)
Cmdlet Function
Contêiner de
distribuição
Snap-in Module
Repositório OSS?
MVP Open Days 2015
Onde hospedar?
MVP Open Days 2015
GitHub! github.com/igoravl/tfscmdlets
Editor de Código
MVP Open Days 2015
Qual GUI usar?
• Fácil: nenhum!
• O que eu quero é um IDE
MVP Open Days 2015
PoshTools: PowerShell Tools for Visual Studio
Estilo
MVP Open Days 2015
Como escrever código em PowerShell?
• Indentação
MVP Open Days 2015
Como escrever código em PowerShell?
• Begin/Process/End
MVP Open Days 2015
Como escrever código em PowerShell?
• Padrões de Nomenclatura• Verb-Noun:
• Set-Bar
• Remove-Baz
• Default Module Prefix• Verb-PrefixNoun
• Get-TfsFoo
• Set-TfsBar
MVP Open Days 2015
Como escrever código em PowerShell?
• Parameters
MVP Open Days 2015
Como escrever código em PowerShell?
• Comment Docs
Pipeline
MVP Open Days 2015
O que é o pipeline do PowerShell?
MVP Open Days 2015
Recebendo dados via pipeline
MVP Open Days 2015
Retornando dados no pipeline
• “Prints”• Write-Output
• Comando “return”
• Expressões
MVP Open Days 2015
Lidando com retornos indesejados
Tratamento de Erros
MVP Open Days 2015
Validação de parâmetros?
• Baseada em atributos• AllowNull
• AllowEmptyString
• AllowEmptyCollection
• ValidateCount
• ValidateLength
• ValidatePattern
• ValidateRange
• ValidateScript
• ValidateSet
• ValidateNotNull
• ValidateNotNullOrEmpty
MVP Open Days 2015
Tratamento de Exceções
• Try / Catch / Throw
MVP Open Days 2015
Confirmação de Operações Destrutivas?
• SupportsShouldProcess
• ConfirmImpact
Integração Contínua e Testes
MVP Open Days 2015
Testes de Unidade?
Pester• github.com/pester/Pester
Nuget
• www.nuget.org/packages/Pester/
MVP Open Days 2015
Integração Contínua?
AppVeyorappveyor.com
MVP Open Days 2015
Análise Estática de Código?
• PowerShell Static Code Analyzer
• PSScriptAnalyzer
• “FxCop para PS”
• Novo no WMF 5.0
Distribuição
MVP Open Days 2015
Como preparar meu módulo?
• Arquivo de Definição• Módulo.PSD1
• Agrupa módulos
• Adiciona metadados
• Descreve sub-módulos
MVP Open Days 2015
Onde instalar meu módulo?
• Global: $PSHome\Modules(%Windir%\System32\WindowsPowerShell\v1.0\Modules)
• Usuário: $Home\Documents\WindowsPowerShell\Modules(%UserProfile%\Documents\WindowsPowerShell\Modules)
• Vendor-specific: C:\Program Files (x86)T-Shooter
TfsCmdletsTfsCmdlets.psd1TfsCmdlets.psm1
(Company Name)
(Module Name)
(Module files)
MVP Open Days 2015
Como distribuir
• Online• PsGet (psget.net)
• Projeto da Comunidade
• Disponível imediatamente
• PowerShell Gallery(www.powershellgallery.com)
• Projeto da Microsoft
• “Nuget” oficial para PowerShell
• Limited Preview
• Nativo no WMF 5.0
MVP Open Days 2015
Como distribuir?
• Offiline• WIX
• Visual Studio Gallery
Q&A