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
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?
AppVeyor
appveyor.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: $PSHomeModules
(%Windir%System32WindowsPowerShellv1.0Modules)
• Usuário: $HomeDocumentsWindowsPowerShellModules
(%UserProfile%DocumentsWindowsPowerShellModules)
• Vendor-specific: C:Program Files (x86)
T-Shooter
TfsCmdlets
TfsCmdlets.psd1
TfsCmdlets.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

Dilemas de um Desenvolvedor .NET na Terra do PowerShell

  • 1.
    MVP Open Days2015 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
  • 2.
    Agenda • PowerShell • VisualStudio • ... E mais algumas coisas entre os dois  • Mas não é só isso! • Espero atender a Devs e ITPros
  • 3.
  • 4.
    MVP Open Days2015 Por que PowerShell? •Consultoria ALM – TFS e afins •Um monte de coisas repetitivas •Hora de criar scripts! •CMD? •.NET? •PowerShell!
  • 5.
    MVP Open Days2015 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
  • 8.
  • 9.
    MVP Open Days2015 .NET ou PowerShell?
  • 10.
    MVP Open Days2015 Cmdlet? Function? Elemento .NET PowerShell Comando (unidade básica) Cmdlet Function Contêiner de distribuição Snap-in Module
  • 11.
  • 12.
    MVP Open Days2015 Onde hospedar?
  • 13.
    MVP Open Days2015 GitHub! github.com/igoravl/tfscmdlets
  • 14.
  • 15.
    MVP Open Days2015 Qual GUI usar? • Fácil: nenhum! • O que eu quero é um IDE
  • 16.
    MVP Open Days2015 PoshTools: PowerShell Tools for Visual Studio
  • 17.
  • 18.
    MVP Open Days2015 Como escrever código em PowerShell? • Indentação
  • 19.
    MVP Open Days2015 Como escrever código em PowerShell? • Begin/Process/End
  • 20.
    MVP Open Days2015 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
  • 21.
    MVP Open Days2015 Como escrever código em PowerShell? • Parameters
  • 22.
    MVP Open Days2015 Como escrever código em PowerShell? • Comment Docs
  • 23.
  • 24.
    MVP Open Days2015 O que é o pipeline do PowerShell?
  • 25.
    MVP Open Days2015 Recebendo dados via pipeline
  • 26.
    MVP Open Days2015 Retornando dados no pipeline • “Prints” • Write-Output • Comando “return” • Expressões
  • 27.
    MVP Open Days2015 Lidando com retornos indesejados
  • 28.
  • 29.
    MVP Open Days2015 Validação de parâmetros? • Baseada em atributos • AllowNull • AllowEmptyString • AllowEmptyCollection • ValidateCount • ValidateLength • ValidatePattern • ValidateRange • ValidateScript • ValidateSet • ValidateNotNull • ValidateNotNullOrEmpty
  • 30.
    MVP Open Days2015 Tratamento de Exceções • Try / Catch / Throw
  • 31.
    MVP Open Days2015 Confirmação de Operações Destrutivas? • SupportsShouldProcess • ConfirmImpact
  • 32.
  • 33.
    MVP Open Days2015 Testes de Unidade? Pester • github.com/pester/Pester Nuget • www.nuget.org/packages/Pester/
  • 34.
    MVP Open Days2015 Integração Contínua? AppVeyor appveyor.com
  • 35.
    MVP Open Days2015 Análise Estática de Código? • PowerShell Static Code Analyzer • PSScriptAnalyzer • “FxCop para PS” • Novo no WMF 5.0
  • 36.
  • 37.
    MVP Open Days2015 Como preparar meu módulo? • Arquivo de Definição • Módulo.PSD1 • Agrupa módulos • Adiciona metadados • Descreve sub-módulos
  • 38.
    MVP Open Days2015 Onde instalar meu módulo? • Global: $PSHomeModules (%Windir%System32WindowsPowerShellv1.0Modules) • Usuário: $HomeDocumentsWindowsPowerShellModules (%UserProfile%DocumentsWindowsPowerShellModules) • Vendor-specific: C:Program Files (x86) T-Shooter TfsCmdlets TfsCmdlets.psd1 TfsCmdlets.psm1 (Company Name) (Module Name) (Module files)
  • 39.
    MVP Open Days2015 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
  • 40.
    MVP Open Days2015 Como distribuir? • Offiline • WIX • Visual Studio Gallery
  • 41.