dilemas de um desenvolvedor .net na terra do powershell
TRANSCRIPT
![Page 1: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/1.jpg)
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
![Page 2: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/2.jpg)
Agenda
• PowerShell
• Visual Studio
• ... E mais algumas coisas entre os dois
• Mas não é só isso!
• Espero atender a Devs e ITPros
![Page 3: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/3.jpg)
Motivação
![Page 4: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/4.jpg)
MVP Open Days 2015
Por que PowerShell?
•Consultoria ALM – TFS e afins•Um monte de coisas repetitivas
•Hora de criar scripts!•CMD?
• .NET?
•PowerShell!
![Page 5: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/5.jpg)
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
![Page 6: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/6.jpg)
![Page 7: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/7.jpg)
![Page 8: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/8.jpg)
.NET ou PowerShell?
![Page 9: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/9.jpg)
MVP Open Days 2015
.NET ou PowerShell?
![Page 10: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/10.jpg)
MVP Open Days 2015
Cmdlet? Function?
Elemento .NET PowerShell
Comando
(unidade básica)
Cmdlet Function
Contêiner de
distribuição
Snap-in Module
![Page 11: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/11.jpg)
Repositório OSS?
![Page 12: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/12.jpg)
MVP Open Days 2015
Onde hospedar?
![Page 13: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/13.jpg)
MVP Open Days 2015
GitHub! github.com/igoravl/tfscmdlets
![Page 14: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/14.jpg)
Editor de Código
![Page 15: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/15.jpg)
MVP Open Days 2015
Qual GUI usar?
• Fácil: nenhum!
• O que eu quero é um IDE
![Page 16: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/16.jpg)
MVP Open Days 2015
PoshTools: PowerShell Tools for Visual Studio
![Page 17: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/17.jpg)
Estilo
![Page 18: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/18.jpg)
MVP Open Days 2015
Como escrever código em PowerShell?
• Indentação
![Page 19: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/19.jpg)
MVP Open Days 2015
Como escrever código em PowerShell?
• Begin/Process/End
![Page 20: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/20.jpg)
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
![Page 21: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/21.jpg)
MVP Open Days 2015
Como escrever código em PowerShell?
• Parameters
![Page 22: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/22.jpg)
MVP Open Days 2015
Como escrever código em PowerShell?
• Comment Docs
![Page 23: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/23.jpg)
Pipeline
![Page 24: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/24.jpg)
MVP Open Days 2015
O que é o pipeline do PowerShell?
![Page 25: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/25.jpg)
MVP Open Days 2015
Recebendo dados via pipeline
![Page 26: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/26.jpg)
MVP Open Days 2015
Retornando dados no pipeline
• “Prints”• Write-Output
• Comando “return”
• Expressões
![Page 27: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/27.jpg)
MVP Open Days 2015
Lidando com retornos indesejados
![Page 28: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/28.jpg)
Tratamento de Erros
![Page 29: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/29.jpg)
MVP Open Days 2015
Validação de parâmetros?
• Baseada em atributos• AllowNull
• AllowEmptyString
• AllowEmptyCollection
• ValidateCount
• ValidateLength
• ValidatePattern
• ValidateRange
• ValidateScript
• ValidateSet
• ValidateNotNull
• ValidateNotNullOrEmpty
![Page 30: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/30.jpg)
MVP Open Days 2015
Tratamento de Exceções
• Try / Catch / Throw
![Page 31: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/31.jpg)
MVP Open Days 2015
Confirmação de Operações Destrutivas?
• SupportsShouldProcess
• ConfirmImpact
![Page 32: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/32.jpg)
Integração Contínua e Testes
![Page 33: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/33.jpg)
MVP Open Days 2015
Testes de Unidade?
Pester• github.com/pester/Pester
Nuget
• www.nuget.org/packages/Pester/
![Page 34: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/34.jpg)
MVP Open Days 2015
Integração Contínua?
AppVeyorappveyor.com
![Page 35: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/35.jpg)
MVP Open Days 2015
Análise Estática de Código?
• PowerShell Static Code Analyzer
• PSScriptAnalyzer
• “FxCop para PS”
• Novo no WMF 5.0
![Page 36: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/36.jpg)
Distribuição
![Page 37: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/37.jpg)
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
![Page 38: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/38.jpg)
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)
![Page 39: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/39.jpg)
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
![Page 40: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/40.jpg)
MVP Open Days 2015
Como distribuir?
• Offiline• WIX
• Visual Studio Gallery
![Page 41: Dilemas de um Desenvolvedor .NET na Terra do PowerShell](https://reader033.vdocuments.mx/reader033/viewer/2022051213/55a5caef1a28ab374e8b4708/html5/thumbnails/41.jpg)
Q&A