Top Banner
MVP Open Days 2015 13 e 14 de Março – São Paulo #MVPBR Dilemas de um desenvolvedor .NET na Terra do PowerShell Igor Abade V. Leite - @igorabade Microsoft MVP , Visual Studio ALM
41

Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Jul 15, 2015

Download

Technology

Igor Abade
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

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

Motivação

Page 4: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

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
Page 7: Dilemas de um Desenvolvedor .NET na Terra do PowerShell
Page 8: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

.NET ou PowerShell?

Page 9: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

.NET ou PowerShell?

Page 10: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

Repositório OSS?

Page 12: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Onde hospedar?

Page 13: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

GitHub! github.com/igoravl/tfscmdlets

Page 14: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Editor de Código

Page 15: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

MVP Open Days 2015

PoshTools: PowerShell Tools for Visual Studio

Page 17: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Estilo

Page 18: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Indentação

Page 19: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Begin/Process/End

Page 20: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

MVP Open Days 2015

Como escrever código em PowerShell?

• Parameters

Page 22: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Como escrever código em PowerShell?

• Comment Docs

Page 23: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Pipeline

Page 24: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

O que é o pipeline do PowerShell?

Page 25: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Recebendo dados via pipeline

Page 26: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

MVP Open Days 2015

Lidando com retornos indesejados

Page 28: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Tratamento de Erros

Page 29: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

MVP Open Days 2015

Tratamento de Exceções

• Try / Catch / Throw

Page 31: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

MVP Open Days 2015

Confirmação de Operações Destrutivas?

• SupportsShouldProcess

• ConfirmImpact

Page 32: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Integração Contínua e Testes

Page 33: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

MVP Open Days 2015

Integração Contínua?

AppVeyorappveyor.com

Page 35: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

Distribuição

Page 37: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

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

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

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

MVP Open Days 2015

Como distribuir?

• Offiline• WIX

• Visual Studio Gallery

Page 41: Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Q&A