Friday, 15 March 2019

Criação de atalho na área de trabalho para perfis do Chrome

Dica rápida:
Para criação de atalho na área de trabalho para perfis do Chrome, entre nos três pontinhos alinhados verticalmente no canto superior direito do chrome, Configurações, Nome e foto do Chrome, e clique no botão para criação do atalho que aparecerá nesta tela.

Tuesday, 20 November 2018

Como reinstalar o Windows Store no Windows 10 que foi removido no contexto do usuário

Cenário:
No Windows 10, através de um script de logon,  removi dos usuários comuns diversos aplicativos do Windows, dentre eles, a própria Windows Store.
O objetivo era evitar que usuários instalassem aplicativos não autorizados em ambientes como salas de aulas.
Lembrando que a remoção foi efetuada no contexto de usuário não administrador.
A linha utilizada foi:

Get-AppxPackage *Microsoft.WindowsStore* | Remove-AppxPackage


Mais tarde me deparei com um problema. Precisava voltar a aplicação Windows Store naquele usuário em específico (já que ao entrar em outros usuários o Windows Store continuava lá).
Digitei o comando, abrindo o Powershell no contexto do Usuário, sem ser como administrador, comando pelo qual pensei que deveria funcionar, mas não resolveu:

Get-AppxPackage -register *Microsoft.WindowsStore*

Encontrei então um script que resolveu meu problema.

O script se encontra aqui:
https://gist.github.com/crowbarsolutions/3234283438e3a6c8c574#file-reinstall-preinstalledapps-ps1

ou copie o conteúdo abaixo em um arquivo com extensão .ps1 e salve com o nome reinstall-preinstalledApps.ps1:



# Get all the provisioned packages
$Packages = (get-item 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications') | Get-ChildItem

# Filter the list if provided a filter
$PackageFilter = $args[0]
if ([string]::IsNullOrEmpty($PackageFilter))
{
echo "No filter specified, attempting to re-register all provisioned apps."
}
else
{
$Packages = $Packages | where {$_.Name -like $PackageFilter}

if ($Packages -eq $null)
{
echo "No provisioned apps match the specified filter."
exit
}
else
{
echo "Registering the provisioned apps that match $PackageFilter"
}
}

ForEach($Package in $Packages)
{
# get package name & path
$PackageName = $Package | Get-ItemProperty | Select-Object -ExpandProperty PSChildName
$PackagePath = [System.Environment]::ExpandEnvironmentVariables(($Package | Get-ItemProperty | Select-Object -ExpandProperty Path))

# register the package
echo "Attempting to register package: $PackageName"

Add-AppxPackage -register $PackagePath -DisableDevelopmentMode
}




Entre no diretório onde você salvou o script através do powershell (executado como usuário comum), execute o script através da linha:
powershell -executionpolicy bypass .\reinstall-preinstalledApps.ps1  *Microsoft.WindowsStore*

Após realizar isto, meu problema foi resolvido, o Windows Store voltou a aparecer para o usuário em questão.



http://www.crowbarsolutions.com/uninstalling-all-apps-in-windows-10/ (parte REINSTALLING THE STORE APP)
http://www.pcwizardsinc.com/home/windows10startmenubroken
https://www.youtube.com/watch?v=l9id9QOa1wc

Tuesday, 4 September 2018

Ferramenta Online para remoção de espaços indesejados

Segue ferramenta online para remoção de espaços indesejados, sendo possível substituir multiplos espaços por um único espaço, ou remover todos os espaços.


Para acessar a ferramenta:
https://www.miniwebtool.com/remove-spaces/

Wednesday, 28 March 2018

Pesquisa usando expressões regulares no Kate

Ao abrir a opção Search and Replace do Kate, é possível selecionar a opção para se usar expressões regulares.
No caso, é possível uma infinidade de comandos.
Como exemplo, necessitava corrigir uma quantidade razoável de arquivos com determinados parâmetros.
Como cada arquivo era diferente, apenas tinha o parâmetro em questão igual, então necessitava que o Kate encontrasse a linha correta e substituísse o conteúdo após o =, independente de qual fosse este conteúdo.
Exemplo:
resolution=1910x865

Para isto, fiz:
resolution=[A-z0-9]+






Obrigado ao Fábio Moretti pela ajuda!

Fonte: Livro Expressões regulares, uma abordagem divertida. Autor:  Aurelio Marinho Jargas

Wednesday, 21 February 2018

Como apagar arquivos mais velhos que X dias de uma pasta (script .ps1)

Com esse script .ps1 é possível apagar arquivos mais velhos que X dias de uma pasta. Desta forma, é possível, por exemplo, automatizar a limpeza da pasta temporária do Windows.
Isto pode ser necessário dependendo do montante de informações que a sua máquina gere nesta pasta.
Ainda há outras funcionalidades como definir que apenas arquivos de determinada extensão sejam apagados.
O exemplo abaixo se refere à pasta temporária e pode ser modificado conforme sua necessidade.


#<BEGIN_SCRIPT>#

#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "15"
#----- define folder where files are located ----#
$TargetFolder = "C:\Windows\Temp"
#----- define extension ----#
$Extension = "*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get files based on lastwrite filter and specified folder ---#
#$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
$Files = Get-Childitem $TargetFolder -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)     {
    if ($File -ne $NULL)
        {
        write-host "Limpando arquivos mais antigos que $Days dias da pasta temporaria" -ForegroundColor "Red"
        Remove-Item $File.FullName -Recurse -Force | Out-Null
        }
    else
        {
        Write-Host "Arquivos mais antigos que $Days dias limpos. Nao ha mais o que limpar!" -foregroundcolor "Green"
        }
    }

#<END_SCRIPT>#

Para maiores informações, veja a fonte do script abaixo.

http://www.networknet.nl/apps/wp/published/powershell-delete-files-older-than-x-days#sthash.km4nSGrV.dpuf

Tuesday, 6 February 2018

Como forçar a atualização dos clientes Windows a partir de um domínio

Cenário testado: um domíno Windows com WSUS gerenciando atualizações dos clientes

É possível configurar para que ao passo que o sistema cliente inicie, as atualizações liberadas no WSUS sejam instaladas imediatamente.
Para isto, referencio abaixo um script disponibilizado na comunidade do Spiceworks. O script pode inclusive gerar logs e até enviar e-mails avisando sobre os resultados da atualização.
No meu caso, configurei uma GPO de Startup ordenando a execução do script na inicialização do sistema. Foi uma forma que encontrei para manter as máquinas atualizadas independentemente do fato dos usuários instalariam as atualizações ou não.
O script promete ainda funcionar em cenários sem o uso de WSUS, ou seja, que utilizam o Windows Update de forma direta.

Segue:
https://community.spiceworks.com/scripts/show/82-windows-update-agent-force-script-email-results-version-2-8

Monday, 29 January 2018

CertUtil: encontre HASH de um arquivo com esta ferramenta nativa no Windows

Vários sites disponibilizam o checksum do arquivo oferecido para download, afim de dar mais confiabilidade ao processo de disponibilização e download do arquivo.
Por exemplo, ao puxar o arquivo do VLC (reprodutor de mídias), é possível verificar o checksum do arquivo, neste caso abaixo gerada através do algorítmo SHA-256


O usuário, para verificar a integridade do arquivo, deverá executar uma ferramenta para encontrar a HASH do arquivo e assim poder comparar a HASH.
O Windows já vem com uma ferramenta instalada chamada certUtil, utilizável através da linha de comando.
Para utilizá-la, digite no Powershell ou CMD:

certUtil -hashfile ocaminhocompletodoarquivo [AlgoritmoHash]

Possibilidades de AlgoritmoHash: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512



A seguir um exemplo o exemplo do VLC para verificação da HASH do arquivo:

É possível, a partir do Powershell, trazer somente a Hash, conforme exemplo a seguir:
$(certutil -hashfile ocaminhocompletodoarquivo [AlgoritmoHash])[1] -replace " ",""

Exemplo:


Fonte:
https://superuser.com/questions/245775/is-there-a-built-in-checksum-utility-on-windows-7/898377#898377