Criação de pastas

Existem várias formas de criar pastas no sistema de ficheiros através de PowerShell. Abaixo uso 4 métodos distintos que fazem exatamente a mesma coisa… criar pastas.

# Variáveis
$localizacao_e_nome_da_pasta_metodo_1 = "$Env:USERPROFILE\desktop\Método_1"
$localizacao_e_nome_da_pasta_metodo_2 = "$Env:USERPROFILE\desktop\Método_2"
$localizacao_e_nome_da_pasta_metodo_3 = "$Env:USERPROFILE\desktop\Método_3"
$localizacao_e_nome_da_pasta_metodo_4 = "$Env:USERPROFILE\desktop\Método_4"

# Método 1 - Usando método New-Item do PowerShell
New-Item -ItemType directory -Path $localizacao_e_nome_da_pasta_metodo_1

# Método 2 - Usando .NET Framework
[system.io.directory]::CreateDirectory("$localizacao_e_nome_da_pasta_metodo_2")

# Método 3 - Usando método Scripting.FileSystemObject
$a = New-Object -ComObject scripting.filesystemobject
$a.CreateFolder("$localizacao_e_nome_da_pasta_metodo_3")

# Método 4 - Usando método Linha de Comandos
md $localizacao_e_nome_da_pasta_metodo_4

Imagem com o resultado da execução do script

image

Oporto BizTalk Innovation Day

 

Oporto BizTalk Innovation Day é um evento de um dia focado exclusivamente em Microsoft BizTalk Server e tópicos relacionados. Irá ocorrer no dia 14 de Março de 2013 na Ribeira do Porto (Casa do Infante) e contará com a presença de 5 oradores internacionais, todos eles MVP’s de BizTalk, e abordará diferentes temas como: administração e monitorização, BizTalk Server 2013, novos adaptadores, optimização de performance, integração on-permise ou na Cloud entre outros.

Este evento vem na sequência de outros que têm sido realizados em várias grandes cidades europeias desde Fevereiro 2011: Amsterdão (Holanda), Milão (Itália), e Stavanger (Noruega) O último evento aconteceu em Londres e foi um enorme sucesso! Com lotação esgotada, contou com a presença de 130 participantes de 16 países diferentes.

 

Audiência:

Este evento é destinado a todas as pessoas interessadas em BizTalk Server ou integração com diferentes perfis: programadores, administradores e arquitectos. Há algo para todos!

  • BizTalk Server 2013: Cloud based adapters: Uma introdução aos novos adaptadores disponíveis com o BizTalk Server 2013 que são direccionados para a integração com a Cloud.
  • BizTalk assessment and architecture review, strategies, methods and troubleshooting: extensa conversa de como resolver problemas reais que normalmente poderão acontecer na plataforma BizTalk Server (apresentação de cenários reais) e sobre a importância de criar uma boa documentação.
  • How to be Proactivity in BizTalk: Esta apresentação irá abordar temas com contadores, base de dados, boas práticas e a importância de ser pró-activo para manter a estabilidade e alta disponibilidade que o BizTalk Server oferece.
  • BizTalk Mapping Patterns and best practices: introdução a alguns dos problemas comuns de mapeamento e soluções e boas práticas no desenvolvimento de mapas.
  • Assim como a introdução ao novo padrão na monitorização e gestão da plataforma BizTalk Serve: BizTalk360

 

Um evento para todos os profissionais e empresas que utilizam o BizTalk Server e interessados ​​no campo da integração, tanto na nuvem privada ou pública que definitivamente não deve perder. Junte-se a cinco dos mais ativos MVPs (Microsoft Most Valuable Professionals) na comunidade de BizTalk Server para um espetacular no Porto!

Reserve já o seu lugar em http://obid.devscope.net/.

 

 

Recursos adicionais:

Blogues dos orados do evento:

Sandro Pereira http://sandroaspbiztalkblog.wordpress.com

Steef-Jan Wiggers http://soa-thoughts.blogspot.pt/

Nino Crudele http://ninocrudele.me/

Saravana Kumar http://blogs.biztalk360.com/

Tord Glad Nordahl http://biztalkadmin.com/

Adicionar o Bloco de Notas à funcionalidade "Enviar para"

A partir do Windows Vista a funcionalidade de adicionar itens à lista “Enviar para” (“Send to” em inglês) passou a estar mais inacessível ao utilizador final, por isso a técnica usada mais comum para ultrapassar esta dificuldade é o arrastar do ficheiro para a aplicação.

Na dica de hoje vamos aprender como é que se pode adicionar mais destinos à funcionalidade “Enviar para” e vou usar o Bloco de Notas (Notepad) como exemplo.

 

# cria objeto WScript
$wshshell = New-Object -com wscript.shell 

# resolve o caminho físico da pasta SendTo
$path = $wshshell.SpecialFolders.Item("sendto") 

# combina o caminho do ponto anterior com o subpasta onde vai ser criado o atalho
$shortcutPath = Join-Path -Path $path -ChildPath "Notepad.lnk" 

# define a localização física do atalho
$shortcut = $wshshell.CreateShortcut($shortcutPath) 

# define o valor "Destino" do atalho
$shortcut.TargetPath = "Notepad.exe" 

# define o valor "Descrição" do atalho
$shortcut.Description = "TIP PowerShell" 

# cria o atalho propriamente dito
$shortcut.Save() 

 

Depois da execução deste comando a opção “Notepad” passa a fazer parte da lista de destinos possíveis da funcionalidade “Enviar para”

clip_image002

Ativação de funcionalidades no Windows

Nos exemplos abaixo vou mostrar como é que se pode ativar funcionalidades e papéis do Windows através do PowerShell.

Script #1 – Ativação funcionalidade/papel de forma individual

# Importa o módulo de gestão do servidor
Import-Module servermanager
# Ativa a .NET Framework
Add-WindowsFeature NET-Framework
Add-WindowsFeature NET-Framework-Core
Add-WindowsFeature NET-Win-CFAC
Add-WindowsFeature NET-HTTP-Activation
Add-WindowsFeature NET-Non-HTTP-Activ
# Adiciona as funcionalidades do IIS
Add-WindowsFeature Web-Server
Add-WindowsFeature Web-Add-WindowsFeature WebServer
Add-WindowsFeature Web-Common-Http
Add-WindowsFeature Web-Static-Content
Add-WindowsFeature Web-Default-Doc
Add-WindowsFeature Web-Dir-Browsing
Add-WindowsFeature Web-Http-Errors
Add-WindowsFeature Web-Http-Redirect
Add-WindowsFeature Web-DAV-Publishing
Add-WindowsFeature Web-App-Dev
Add-WindowsFeature Web-Asp-Net
Add-WindowsFeature Web-Net-Ext
Add-WindowsFeature Web-ASP
Add-WindowsFeature Web-CGI
Add-WindowsFeature Web-ISAPI-Ext
Add-WindowsFeature Web-ISAPI-Filter
Add-WindowsFeature Web-Includes
Add-WindowsFeature Web-Health
Add-WindowsFeature Web-Http-Logging
Add-WindowsFeature Web-Log-Libraries
Add-WindowsFeature Web-Request-Monitor
Add-WindowsFeature Web-Http-Tracing
Add-WindowsFeature Web-Security
Add-WindowsFeature Web-Basic-Auth
Add-WindowsFeature Web-Windows-Auth 

 

Script #2 – Faz a mesma coisa que o script anterior mas em menos linhas

Import-Module ServerManager
Add-WindowsFeature NET-Framework -IncludeAllSubFeature
Get-WindowsFeature Web-* | Add-WindowsFeature 

 

Imagem de execução

image

Cookies e seus conteúdos

Script PowerShell para listar os cookies existentes no computador e mostrar o seu conteúdo

O objetivo deste script é demonstrar o uso de caixas de diálogo e tratamento das respostas dos utilizadores. Vamos também ver como é que se consegue apresentar resultados no formato grelha.

 

$a = New-Object -ComObject WScript.Shell 
$Resposta1 = $a.popup("Queres saber quais os cookies que tens neste momento no computador?", 0,"Pergunta",4) 
If ($Resposta1 -eq 6)
{ 
    dir ([system.environment]::GetFolderPath('Cookies')) | Out-GridView 
    $Resposta2 = $a.popup("E queres ver o conteúdo de cada destes cookies?", 0,"Pergunta",4) 
    If ($Resposta2 -eq 6)
    { 
        dir ([system.environment]::GetFolderPath('Cookies'))  | Get-Content | Out-GridView 
    }
    else
    {
        $b.popup("Se quiseres ver, executa novamente o script") 
    }

} 
else 
{ 
    $a.popup("É pena pois devias queres saber...") 
}

 

Exemplo da execução do script:

image

Executar comandos numa máquina remota

Exemplo para executar o comando “calc.exe” (Calculadora) numa máquina remota:

#variáveis
$computador = “computador”
$credenciais = “dominio\utilizador”
$processo = “calc.exe”

# O comando propriamente dito. Se o resultador for “True”, o comando foi executado com sucesso, caso contrário algo correu mal (provavelmente as credenciais estão erradas ou sem acesso ou a máquina não está disponível).

(Invoke-WmiMethod Win32_Process Create $processo -ComputerName $computador -Credential $credenciais).ReturnValue -eq 0

 

Uma vez que o comando é executado através do método WMI o mesmo não vai ter interface para o utilizador da máquina remota, mas é possível verificar através do gestor de tarefas que o comando se encontra em execução.

Obter a capacidade, o espaço livre em disco de uma máquina remota e criar gráfico com as maiores 20 bases de dados

Na sequência da dica de PowerShell “Obter uma lista de bases de dados e respetivo tamanho” surgiu a ideia de adicionar um script que mostrasse o espaço livre em disco do servidor SQL. Para além disso pretendia-se também que apresentasse um gráfico com a ocupação das bases de dados.

Dado o elevado número de BDs era difícil representa-las todas num gráfico, por isso coloquei um filtro na query sql para retornar apenas as 20 maiores. Não encontrei forma de adicionar o nome da base de dados às barras…. Mas quem quiser fazê-lo e partilhar esse conhecimento, é obviamente bem-vindo.

 

Script #1

Capacidade e espaço livre em disco de uma determinada máquina

Clear
$error.Clear()
$computador = Read-host "Qual o nome do computador?(ex: SERVIDOR)"
if ($computador -eq '')
{
    $computador = "SERVIDOR"
}
get-wmiobject -computer $computador win32_logicaldisk -filter "drivetype=3" -ErrorAction SilentlyContinue | ForEach-Object {
        Write-Host Computador: $computador
        Write-Host Disco: $_.deviceid;
        write-host Capacidade do disco: ($_.size/1GB).tostring("0.00")GB;
        write-host Espaço Livre: ($_.freespace/1GB).tostring("0.00")GB
    }
if ($error[0])
{
    Write-host “Ocorreu(am) o(s) seguinte(s) erro(s): `n $error[0]”
} 

 

Script #2

Gráfico com o tamanho das maiores 20 bases de dados

Clear
$error.Clear()
# Carregamento das assemblies
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization")

# Devolve o nome e tamanho das 20 maiores bases de dados
if ( (Get-PSSnapin -Name SqlServerCmdletSnapin100 -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin SqlServerCmdletSnapin100
}
if ( (Get-PSSnapin -Name SqlServerProviderSnapin100 -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin SqlServerProviderSnapin100
}
$utilizador = Read-Host "Utilizador SQL a usar (ex: SA)"
$palavrapasse = Read-Host "Palavra-passe do utilizador $utilizador"
$servidorSQL = Read-Host "Nome do servidor SQL"
$Resultados = @(Invoke-SQLCmd -Query "sp_databases" -Database master -ServerInstance $servidorSQL -Username $utilizador -Password $palavrapasse -ErrorAction SilentlyContinue| sort Database_Size -Descending | Select-Object -Last 20)

if ($error[0])
{
    Write-host “Ocorreu(am) o(s) seguinte(s) erro(s): `n $error[0]”
} 
$utilizador = ""
$palavrapasse = "" 

# Cria o objeto Gráfico
$Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart 
$Chart.Width = 50 * ($Resultados.Count + 1 )
$Chart.Height = 400 
$Chart.Left = 40 
$Chart.Top = 30

# Cria a área onde vai ser adiciona o gráfico
$ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea 
$Chart.ChartAreas.Add($ChartArea)

# Adiciona os dados ao gráfico
[void]$Chart.Series.Add("Data")
$Chart.Series["Data"].Points.DataBindXY($Resultados.DATABASE_NAME, $Resultados.DATABASE_SIZE)

# Mostra o gráfico no formulário
$Chart.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
                [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
$Form = New-Object Windows.Forms.Form 

# Encontra o valor mais elevado e pinta-o de vermelho
$maxValuePoint = $Chart.Series["Data"].Points.FindMaxByValue() 
$maxValuePoint.Color = [System.Drawing.Color]::Red

# Altera a cor de fundo do gráfico para transparente
$Chart.BackColor = [System.Drawing.Color]::Transparent

# Dá um efeito 3D às barras
$Chart.Series["Data"]["DrawingStyle"] = "Cylinder"

# Adiciona a cada coluna o valor específico
$Chart.Series["Data"].IsvalueShownAsLabel=$true

# Apresenta o gráfico
$Form.Text = "Gráfico das bases de dados no SRVSFQA2" 
$Form.Width = 55 * ($Resultados.Count + 1 )
$Form.Height = 600 
$Form.controls.add($Chart) 
$Form.Add_Shown({$Form.Activate()}) 
$Form.ShowDialog()
Seguir

Get every new post delivered to your Inbox.

Junte-se a 342 outros seguidores