Dilemas de um Desenvolvedor .NET na Terra do PowerShell

Preview:

Citation preview

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

Recommended