Editando Tags de Musicas pelo Powershell

Olá a todos,

Hoje vamos ver uma forma de organizar as tags que contem as informações das musicas. Se vocês, assim como, eu gostam de ouvir musicas para se concentrar ou relaxar é possivel que gostem de manter a biblioteca de musicas organizada. Para isso, temos diversas ferramentas no mercado para fazer esta tarefa, mas porque não fazer isso pelo powershell? Recentemente visando o codeplex.com encontrei o projeto TAGLIBSharp, que é uma Biblioteca de classes para editar tags de arquivos de audio, video e imagens. Agora vamos começar carregando a DLL dentro da console do powershell para iniciar a edição.

Para carregar a DLL vamos utilizar a Classe ‘Reflection.Assembly’ com o método LoadFrom, um ponto de atenção, ao baixar uma DLL da internet é necessario desbloquear o arquivo, caso isso nao seja feito o Powershell nao irá carregar o Namespace da classe em memória, Isso pode ser feito com o commandlet Unblock-File ou com o botão direito e em propriedades e clicando na opção desbloquear.

[Reflection.Assembly]::LoadFrom( (Resolve-Path “.\taglib-sharp.dll”) )image

Vamos agora armazenar dentro de uma variavel um objeto da classe que carregamos com o arquivo que desejamos editar.

$media = [TagLib.File]::Create(“$env:USERPROFILE\Music\Metalica – From whom the bells.mp3”)

image

Após carregar o arquivo podemos ver as propriedades que podem ser alteradas.

image

Para este exemplo vamos editar as propriedades mais básicas como Titulo, Artista e Album:

$media.Tag.Title = “From Whom the Bells”
$media.Tag.Artists = “Metallica”
$media.Tag.Album = ‘Ride the Lightning’

image

Mesmo alterando as propriedades podemos ver no explorer que as alterações nao são salvas automaticamente:image

Para isso na classe temos o método ‘Save’

$media.Save()image

Após comitar a mudança realizada executando o método Save, podemos ver no explorer as alterações que desejavamos:image


Vimos neste post como editar rapidamente Tags de arquivos de audio utilizando a Classe TaglibSharp, em breve irei postar uma função para edição de forma mais simples e em lote de arquivos de musica.

Dúvidas? Sugestões? Comente!

Até a próxima!

Anúncios
Publicado em Powershell | Marcado com , , , | Deixe um comentário

Verificando se a sessão possui permissões administrativas no Powershell

Olá a todos,

Hoje vamos verificar como verificar se a sessão ativa do Powershell esta sendo executada com uma credencial que possui acesso ‘Administrador’. Para isso iremos utilizar a classe System.Security.Principal.WindowsIdentity, que possui um método chamado GetCurrent(), este método lista as permissões referentes ao usuário que esta executando a sessão.

([System.Security.Principal.WindowsIdentity]::GetCurrent())

image

Na propriedade ‘Groups’ podemos ver os grupos que o usuário faz parte:

([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups
image

No KB243330 podemos verificar o SID que se refere ao grupo ‘Administradores’, por isso iremos filtrar este SID, caso o filtro nao retorne nenhum valor, significa que o usuário nao faz parte do grupo, logo nao possuirá as permissões.

SID: S-1-5-32-544
Nome: administradores
Descrição: Um grupo interno. Após a instalação inicial do sistema operacional, o único membro do grupo é a conta de administrador. Quando um computador ingressa em um domínio, o grupo Admins do domínio é adicionado ao grupo Administradores. Quando um servidor torna-se um controlador de domínio, o grupo Administradores de empresa também é adicionado ao grupo Administradores.

(([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match “S-1-5-32-544”)
image

Adicionando o ‘Acelerador de tipo’(type accelerator) bool  temos o resultado em Verdadeiro ou falso, retornando valor verdadeiro, a sessão estará sendo executada com privilégio administrativo, retornando falso, a sessão esta senso executada por um usuário sem privilégios


[bool](([System.Security.Principal.WindowsIdentity]
::GetCurrent()).groups -match “S-1-5-32-544”)
image

Hoje vimos como rapidamente verificar se uma sessão esta sendo executada com privilégios elevados, porem podemos filtrar diversos tipos de IDs para diversos testes de nivel de acesso.

Referências:

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx
http://support.microsoft.com/kb/243330

 

Dúvidas? Perguntas? Comente!

Até a próxima!

Publicado em Powershell | Deixe um comentário

Acessando feed de noticias via Powershell

Olá a todos,

Hoje vamos ver como ler um feed de noticias através do powershell. O feed de noticias nada mais é que um arquivo XML que é atualizado de tempos em tempos e que contém um resumo dos itens mais recentes publicados, no nosso exemplo vamos utilizar o XML de feed deste blog.

A url do feed é esta: Feed. Para obter o conteudo deste XML vamos utilizar a classe System.Web.Webclient, que com seu método DownloadString(), podemos visualizar diretamente o conteúdo do arquivo. O conteúdo é obtido em formato plaintext porém queremos ele em formato XML, para isso iremos utilizar o “acelerador” [XML], que vem pacote Core do Powershell, por fim, isto será armazenado em uma variável como um objeto, para isso vamos utilizar o seguinte comando:

$feed= [xml](New-Object System.Net.WebClient).DownloadString(http://guidooliveira.com/feed”)

image

Agora que temos o Feed dentro em um objeto XML podemos navegá-lo e acessar as informações:

image

Utilizando o cmdlet Get-Member podemos filtrar os itens acessiveis:

image

Após acessar todas as propriedades somente a propriedade Item, apresenta o conteúdo esperado, conforme podemos ver no XML:

image

Agora apenas formatando a exibição em modo de tabela com o cmdlet Format-Table, podemos visualizar claramente os posts com suas respectivas URLs:

image

Da mesma forma podemos exibir em uma janela separada com o cmdlet Out-GridView selecionando as propriedades desejadas:

$feed.rss.channel.item Select-Object-Property title,link Out-GridViewTitle RSSFeed_GuidoOliveira.com’

image

Outra forma mais simples, que esta disponível a partir da versão 3 do Powershell é  utilizando o cmdlet Invoke-RestMethod, que ja faz toda a tratativa do feed:

Invoke-RestMethod http://guidooliveira.com/feed  select Title,Link

image

 

Hoje vimos como acessar arquivos XML que estao na Web e como navegar e exibir suas respectivas informações.

 

Dúvidas? Sugestões? Comente!

Até a próxima!

Publicado em Uncategorized | Marcado com , , , , , , , , , , , | Deixe um comentário

Gerando senhas complexas com .NET no powershell

 

Olá Pessoal!

Hoje vamos ver como gerar senhas complexas de forma simples usando o método GeneratePassword() da Classe System.Web.Security.Membership, este método me permite de forma randomica gerar novas senhas complexas a cada execução do comando.

Primeiro vamos carregar o Assembly da classe no powershell, podemos fazer isso de duas formas:

.NET:

[Reflection.Assembly]::LoadWithPartialName(“System.Web”)

Add-Type:

Add-Type -AssemblyName System.Web

com o Assembly devidamente carregado podemos executar o metodo diretamente para gerar a senha:

[System.Web.Security.Membership]::GeneratePassword(16,0)

image

 

Onde dentro do parênteses o primeiro número indica o comprimento da senha e o segundo o numero de caracteres nao alfanuméricos. O comprimento máximo da senha é de 128 caracteres e quando maior for o segundo numero, maior o numero de caracteres especiais na senha.

Mais informações sobre o a classe em: [System.Web.Security.Membership]::GeneratePassword()

Dúvidas? Sugestões? Comente!

Até a próxima!

 

Publicado em Uncategorized | Marcado com , , , , , , , , , , | Deixe um comentário

ToTitleCase()–Strings com a Primeira maiúscula no powershell

Olá a todos, quando estamos tratando objetos do tipo String no powershell, temos varios métodos como, ToUpper(), ToLower(), Replace() e afins, porém nao conseguimos localizar o método ToTileCase() que seria ao =PROPER() no excel.

Para isso, podemos utilizar o seguinte método:

(Get-Culture).TextInfo.ToTitleCase(“teste de case sensitive”)

Dentro da propriedade TextInfo no cmdlet Get-Culture podemos localizar o método ToTitleCase() e dentro podemos colocar quaisquer strings para realizar a tratativa para a primeira letra maiuscula.

image

Isso pode ser aplicado para tratar textos de um CSV em um Objeto Customizado do Powershell(PSCustomObject) ou em Reports HTML.

Dúvidas? Comentários? Comente!

 

Até a próxima!

Publicado em Uncategorized | Deixe um comentário

Foto no objeto de usuario com Powershell(GUI)

Olá, Voltando ao tema de insersão de fotos no usuário do AD através do atributo thumbnailPhoto, fiz utilizando .NET e o Powershell Studio da SAPIEN Technologies uma interface grafica simples para insersão ou remoção da foto do usuario no AD, respeitando o tamanho maximo de 10kb.

Utilizando o [ADSISEARCHER] na primeira textbox é feita uma busca do SamAccountName digitado, e seu displayname é exibido na textbox ao lado, caso o usuário ja possua uma imagem, ela será exibida no espaço em branco a direita.

Ao clicar em browse voce deverá selecionar um arquivo de imagem de até 10kb devido a limitações no schema do Active Directory. O botão “Change” irá inserir esta imagem nas propriedades do usuário e o botão remove por sua vez, irá remover qualquer imagem existente. por fim o botão Clear limpa os campos da tela para uma nova insersão.

image

 

Essa aplicação é disponibilizada no formato “as is”, seu uso fica sob responsabilidade de quem utilizá-la.

O link para Download esta disponível no seguinte link: http://gallery.technet.microsoft.com/Insert-User-Image-on-fa992a10

Dúvidas? Comentários? Comente!

 

Até a próxima!

Publicado em Uncategorized | Deixe um comentário

Queries WMI com Win32_Product

Olá a todos,

Hoje iremos ver formas alternativas a Classe Win32_product do repositório WMI padrão. Esta classe nao é otimizada para queries e quaisquer buscas feitas usando ela, usam o provedor MSI para enumerar todas as instancias de software instaladas no sistema, que tambem inicia uma verificação de consistencia. Somente com uma credencial com privilégios administrativos é possivel utilizá-la sem contar que sua performance é muito baixa.

Usando o cmdlet Measure-Object, podemos verificar o tempo que um comando leva para ser executado, no exemplo abaixo, somente enumerar os softwares instalados levou 31 segundos.

Win32_Procuct

image

 

Quando se tem o System Center Configuration Manager instalado no parque temos acesso a outra classe que é instalada junto ao agente, a classe Win32reg_AddRemovePrograms, que é muito mais rapida, no exemplo abaixo ela levou apenas 80 milisegundos para concluir a consulta.

Win32reg_AddRemovePrograms

image

Temos tambem

Registro

Get-ItemProperty –Path “HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*| select DisplayName,Publisher,Version,UninstallString

  image

 

Com essa dica voce pode agora otimizar suas consultas em possiveis scripts de inventario do parque.

 

Dúvidas? Sugestões? Comente!

Até a próxima!

Publicado em Uncategorized | Deixe um comentário