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"
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 repositoryposhcode.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.compowershell.com |
The place for
powershell people: home of dr. tobias weltner, powershell mvp
|
Scriptinganswers.com |
|
Poshoholicposhoholic.com |
Totally addicted to PowerShell and automation
|
heyscriptingguy |
Learn about Windows PowerShell
|
Under the stairstfl09.blogspot.com |
Thomas Lee's
collection of random interesting items, views on things, mainly IT related,
as well as the occasional rant.
|
PeetersOnlinepeetersonline.nl |
Virtually Everything about Powershell and PowerCLI |
techprosaichalr9000.com |
Powershell & other stuff
|
The powershell guythepowershellguy.com |
get-Shell | where
{$_.pipeline -contains Objects}
|
Huddled masseshuddledmasses.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
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"}
}
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
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.
#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.
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
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
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 :)
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 :)
Assinar:
Comentários (Atom)




