PowerShell 2: Corrigido problema de performance com a listagem de atributos

Olá,

algum tempo atrás eu comentei aqui no blog que o PowerShell tinha um pequeno problema de performance com a listagem de arquivos. O problema estava com o format-table, que usava a propriedade Mode para imprimir na tela os atributos dos arquivos. Esta, por sua vez, era gerada usando várias vezes a operação and binária. Um dos atributos em especial (o atributo diretório, que indica se um dado objeto é um diretório ou não)podia ser gerado de outra forma, 33% mais rápida. Basta ler o conteúdo do atributo PSIsContainer ao invés de usar o and.

Enfim... eu reclamei aqui no blog, postei ainda no blog oficial do PowerShell e no do MOW (MVP Admin Frameworks, Holanda se não me engano). Resolvi conferir isso agora e vi que no PowerShell 2 CTP isso foi corrigido e agora a propriedade Mode usa o método get nativo do .Net Framework.

Fantástico! Isso mostra que a Microsoft não é a estrutura engessada que todo mundo imagina. Eles estão sim abertos ao diálogo, sugestões e melhorias. Basta sugerir. Se for bom, entra nos produtos.

E parabéns ao Jeffrey Snover e todo o time do PowerShell! Congratulations guys!

 

Technorati Tags: , , ,

Categorias dessa postagem:

MP3 e PowerShell

Olá,

encontrei alguns exemplos legais de como trabalhar com uma biblioteca chamada TagLib#, que é uma biblioteca que permite manipular metadados em arquivos de audio (MP3, OGG e WMA, por exemplo).

http://huddledmasses.org/editing-media-tags-from-powershell/

Não cheguei a testar, mas parece interessante. Já cheguei a pensar em escrever biblioteca semelhante para trabalhar com MP3 em VBScript, mas desisti ao ver que alguém já tinha feito essa boa ação e colocado o código na Internet.

Editar tags não costuma ser uma tarefa rápida: consiste em abrir, analisar os arquivos, escrever e fechar, salvando as alterações. Pode parecer simples, mas se os algoritmos utilizados não forem eficientes, o trabalho pode ficar mais lento. Converter entre formatos de tag também pode ser um trabalho demorado (computacionalmente falando). Entre todos os meus testes, o software mais rápido que eu encontrei para editar tags foi o MP3Tag, que pode ser obtido aqui: http://www.mp3tag.de/en/

Até mais!

Categorias dessa postagem: ,

Send-SMTPMail: Enviando e-mails via PowerShell

Olá,

a seguir, temos uma ferramenta bastante útil para o PowerShell: como enviar emails via linha de comando.

http://mspowershell.blogspot.com/2007/12/send-smtpmail-update.html

Muito bom, recomendo!

Até mais

Categorias dessa postagem:

SendKeys no PowerShell

Olá,

acabei de encontrar uma ferramenta muito útil do VBScript que não tinha uma correspondência direta com nenhum recurso no PowerShell: o SendKeys.

Para quem não conhece, ele é um dos "canivetes suíços" mais interessantes, já que permite a simulação da digitação de teclas. Dessa forma, ele serve como uma "cola" para conseguir automatizar programas que não suportam automação nativamente. Se não dava para fazer programando um script, ainda podia ser feito simulando teclas no teclado.

Pois bem, agora tem como fazer o mesmo no PowerShell... e de uma forma bem mais legal.

http://huddledmasses.org/window-gui-automation-from-powershell/

Vejam um exemplo:

Select-Window notepad | Send-Keys "%(ea)Testing{Enter}{F5}"

Categorias dessa postagem: ,

Reiniciando processos com VBScript e WMI

Olá,

acabei de desenvolver um pequeno script para reiniciar processos, e resolvi publicar aqui. Fiz porque há um problema intermitente com o meu computador que faz com que o scroll do touchpad pare de funcionar aleatoriamente, sem motivo aparente, após algumas sequencias de hibernação/reinicialização. Não descobri ainda, o motivo, mas fiz um script que contorna o problema, fechando todas as instâncias dos programas responsáveis pelo touchpad e abrindo logo em seguida.

Enfim, esse é um script para relembrar os velhos tempos. Faz um bom tempo que não escrevo nada sobre VBScript, que ainda é e vai continuar sendo uma das principais ferramentas para automação no Windows. O Script abaixo reinicia tudo que começa com ap, o que pode ser visto na query WQL na terceira linha.

set objShell = WScript.CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process WHERE caption LIKE 'ap%'")
for each process in colProcess
processPath = process.ExecutablePath
process.terminate()
objShell.run """" & processPath & """"
next
WScript.echo "Processos reiniciados."

Até logo!

Technorati Tags: ,

Categorias dessa postagem: ,