sexta-feira, 19 de outubro de 2012

Descompactar um arquivo usando powershell



Segue abaixo como descompactar arquivos usando powershell.

$Source = "c:\arquivo.zip"
$Destination = "c:\pastadestino"


Unblock-File $Destination
#apenas no PowerShell v3            

#chama a aplicação do zip e abre o arquivo zip
$helper = New-Object -ComObject Shell.Application
$files = $helper.NameSpace($Source).Items()

#copia os arquivos para pasta de destino
$helper.NameSpace($Destination).CopyHere($files)

=============== ATUALIZANDO O POST =======================
Só para auxiliar os proximos.

No Powershell v5 você pode utilizar os seguintes cmdlets

Para descompactar.

Expand-Archive -Path $Source -DestinationPath $Destination

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.archive/expand-archive

quarta-feira, 17 de outubro de 2012

Limpando campo scriptpath - powershell

Recentemente tive que limpar o campo "scriptpath" de todos os usuários do AD.
Abaixo o script:

#carrega  o modulo do AD
import-module ActiveDirectory

get-aduser -filter{scriptpath -like "*"} -properties scriptpath | set-aduser -scriptpath $null

Primeira parte do comando:
get-aduser -filter{scriptpath -like "*"} -properties scriptpath

Lista todos os usuários que possuem o campo "scriptpath" preenchido.


Segunda parte do comando:

set-aduser -scriptpath $null

Atualiza o campo "scriptpath" do usuário encontrado para um valor nulo, ou você pode adicionar um novo valor no campo colocando outra variável ou ate mesmo uma string no lugar da variável "$null".

ex.:
get-aduser -filter{scriptpath -like "*"} -properties scriptpath | set-aduser -scriptpath "meuscript.bat"

segunda-feira, 15 de outubro de 2012

Lista de sites com dicas, scripts e muita informação sobre PowerShell.


SITE/LINK
Descrição

Poweshell code repository

poshcode.org


Is a repository of PowerShell scripts that are free for public use. As you find things useful, we only ask that you give back to our community.

Powershell.com

 powershell.com

The place for powershell people: home of dr. tobias weltner, powershell mvp

Scriptinganswers.com



Poshoholic

poshoholic.com


Totally addicted to PowerShell and automation

heyscriptingguy

Learn about Windows PowerShell

Under the stairs

tfl09.blogspot.com


Thomas Lee's collection of random interesting items, views on things, mainly IT related, as well as the occasional rant.

PeetersOnline

peetersonline.nl

Virtually Everything about Powershell and PowerCLI

techprosaic

halr9000.com

 


Powershell & other stuff

The powershell guy

thepowershellguy.com

 

get-Shell | where {$_.pipeline -contains Objects}

Huddled masses

huddledmasses.org

You can do more than breathe for free...

sábado, 13 de outubro de 2012

Conectando no office 365

Bom dia, boa tarde e boa noite.

A moda agora é office 365,  Exchange na nuvem, 50 gigas de espaço, muitas novidades.

Uma grande vantagem que o office 365 possibilita é a conexão com o powershell de qualquer lugar, bastar passar o link, usuário e senha.
Veja como:


$liveCred = Get-Credential -UserName admin@seudominio.onmicrosoft.com -Message "Office 365"
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session

Digite o usuário e senha do seu domínio e assim que a conexão for estabelecida você já pode executar comandos como get-mailbox, com o powershell 3.0 é só apertar ctrl + espaço que os cmdlets disponíveis vão aparecer.


terça-feira, 28 de fevereiro de 2012

Olá,
Vamos falar sobre o modulo do active directory no power shell.
Não vou entrar em detalhes de como é feita a instalação, mas já adianto que só podera ser feita em windows server 2008 r2, para mais detalhes da instalação:  http://www.mikepfeiffer.net


Segundo o http://technet.microsoft.com
O Módulo do Active Directory para Windows PowerShell fornece script de linha de comando para tarefas administrativas, de configuração e de diagnóstico, com um vocabulário e uma sintaxe consistentes. O Módulo Active Directory habilita a capacidade de gerenciamento de ponta a ponta com o Exchange Server, a Diretiva de Grupo e outros serviços.

 Ou seja, mais cmdlets voltados para as ferramentas microsoft (Ad,Exchange,SystemCenter...)

#vamos começar importando o modulo
import module activedirectory new-psdrive -name dominio -psprovider -activerictory -root "" -server srv
#dominio-> nome do dominio que deseja conectar
#srv-> nome completo do servidor DC


podemos agora adicionar varios novos comandos:
#traz informações do usuário no ad  + propiedade mail e title
get-aduser nomedouser -properties mail,title

#podemos jogar isso para dentro de uma variavel
$users = get-aduser nomedouser -properties mail,title
foreach($user in $users){
 write-host $user.samaccoutname
}

#ou podemos alterar algum campo
$users = get-aduser nomedouser -properties mail,title
foreach($user in $users){
 write-host $user.samaccoutname
set-aduser $user.samaccountname -replace @{title="operacao"}

}

quarta-feira, 15 de fevereiro de 2012

Inventário

Bom dia,
Hoje vamos montar um inventário simples.


Para fazer o levantamento do inventário vamos usar WMI (Windows Manager Instrumentation), o WMI é um  mecanismo simples e consistente para pesquisar informações ou parâmetros de configuração em computadores dentro de uma empresa ou corporação.

Para mais detalhes acesse o link da http://www.devmedia.com.br.

Então quais sao as informações que vamos pesquisar? 

gwmi Win32_ComputerSystem -Comp nomedocomptador
gwmi Win32_OperatingSystem -Comp
nomedocomptador
gwmi Win32_ComputerSystem -Comp nomedocomptador
gwmi Win32_OperatingSystem -Comp nomedocomptador
gwmi Win32_BIOS -Comp nomedocomptador
gwmi Win32_TimeZone -Comp nomedocomptador
gwmi Win32_WmiSetting -Comp nomedocomptador
gwmi Win32_Processor -Comp nomedocomptador
gwmi Win32_PhysicalMemory -Comp nomedocomptador
gwmi Win32_PhysicalMemoryArray -Comp nomedocomptador
gwmi Win32_LogicalDisk -Comp nomedocomptador
gwmi Win32_NetworkAdapterConfiguration -Comp nomedocomptador





 gwmi = Get-WmiObject 

Vamos usar o computersystem, o resultado sera esse:

Domain              : WORKGROUP
Manufacturer       : Sony Corporation
Model               : VGN-CS215J
Name                : LAURO-PC
PrimaryOwnerName    : Lauro
TotalPhysicalMemory : 4155482112
 

 Caso eu queria pegar somente a propiedade domain eu posso rodar o comando da seguinte maneira:


(gwmi Win32_ComputerSystem -Comp computername).domain
e assim para as outras propiedades.


ate a próxima
 

terça-feira, 14 de fevereiro de 2012

Powershell + Excel

Estou cansado de gerar log's em txt e depois ter que colocar tudo em excel, com o powershell isso não é mais problema,você tem a opção de manipular o excel e gerar o seu relatorio direto nele.


#Nova aplicação do excel
$Excel = New-Object -Com Excel.Application
#colocando ele visivel na tela
$Excel.visible = $True
#adicionando pastas de trabalho
$Excel = $Excel.Workbooks.Add()
$Sheet1 = $Excel.Worksheets.Item(1)
#alterar nome da planilha
$Sheet1.Name = "General"

#Preencher a primeira linha
$Sheet1.Cells.Item(1,1) = "Nome"
$Sheet1.Cells.Item(1,2) = "Modelo"
$Sheet1.Cells.Item(1,3) = "CPU"
$Sheet1.Cells.Item(1,4) = "Memoria"
$Sheet1.Cells.Item(1,5) = "Sistema Operacional"
Nos próximos posts vou ensinar a popular essa planílha e adicionar mais informações.

Ping + Log

Bom dia,

Existem várias maneiras de gerar log no powershell, a mais simples é assim:
write-output "teste" >> c:\teste.txt
>> adiciona as linhas sem excluir o conteudo (append).
Veja abaixo um script para pingar todas as maquinas de uma lista

 #Vamos pegar o caminho do arquivo e jogar na variavel $complist
#GC significa get-content, ele lê o arquivo txt
 $complist = gc C:\Pingamaquinas\serverList.txt;
#Título do arquivo de log
echo "Teste de Ping " >> C:\Pingamaquinas\result.txt
#agora vamos fazer um for que vai percorrer todos os computadores do txt e executar o comando Test-Connection, ele é equivalente ao ping, depois vamos salvar isso em um arquivo txt com o nome de result
foreach ($entry in $complist) {
  Test-Connection $entry >> C:\Pingamaquinas\result.txt
 echo "-------------------------------------------------------------------">> C:\Pingamaquinas\result.txt
}

Pronto, agora é so pegar a lista de todos os servidores e colar no txt.

segunda-feira, 13 de fevereiro de 2012

Calculadora no PowerShell

Bom dia,
sem mais demora vamos para mais comandos do power shell.

PS é uma calculadora nativa.
Quantos bytes há em um MB? pergunte para ele.
PS C:\Users> 1mb
1048576

ou quantos disketes eu preciso para guardar o windows 7?
PS C:\Users> 3.35gb/1.44mb
2382,22222222222

é isso ai, amanha tem mais.
abraços

sexta-feira, 10 de fevereiro de 2012

Vida de Suporte


Power Shell

 Vamos começar o blog falando de um sujeito impressionante, o tal do Windows Power Shell, mas o que é ele e o que ele faz?
Bom, segue o link da wikipédia (http://pt.wikipedia.org/wiki/Windows_PowerShell).
Resumindo, um MSDOS melhorado.

Ta certo é muita sacanagem resumir assim, mas a primeira impressão que tive foi essa, olha ai a cara dele:


Depois que dei um dir eu realmente achei que era um MSDOS Azul.











Então qual é a vantagem de usar o Power Shell??  Simples, você pode automatizar qualquer coisa ou procurar qualquer coisa, fora a integração que ele possui com o dotnet e COM.
 Vamos começar com uma coisa bem simples para mostrar seu poder:

O primeiro comando que aprendi foi o get-help (Olha o nome do blog ai), com get help você pode visualizar qualquer  sintaxe de qualquer comando dentro do PS, e se você usar o parametro -full ele vai te mostrar varios exemplos.






Quem quiser já ir adiantando pode fazer o download do PS  http://blogs.msdn.com/b/powershell/archive/2008/12/30/download-windows-powershell.aspx





O próximo comando é o get-process, ele lista todos os processos da sua máquina, ok mas isso ai eu tb posso fazer no dos, mas e se eu quiser saber se um determinado processo esta rodando??
  if(Get-Process | Where-Object { $_.Name -eq "calc" })
        {
                "Windows calc is Running"
        }
    else
        {
                "Windows calc is Not Running"
        }

Que beleza, olha o poder que essa parada tem.

Nó próximo post mais comandos  :)