Compactar e descompactar .zip com powershell

outubro 11th, 2021 by franklin 1 comment »

Compactar

Compress-Archive -LiteralPath %pathOrigem% -DestinationPath %pathDestino%\arquivo.zip

Descompactar

Expand-Archive -LiteralPath %pathOrigem%\arquivo.zip -DestinationPath %pathDestino%

Forçar envio de relatório de update ao WSUS

julho 31st, 2020 by franklin 1 comment »

A única forma que realmente funcionou para o envio do relatório de updates do servidor ao WSUS, foi executar esses comandos no powershell, nessa mesma sequência.

$updateSession = new-object -com "Microsoft.Update.Session"; $updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates
wuauclt /detectnow
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
wuauclt /reportnow

Só o wuauclt /detectnow e o wuauclt /reportnow nunca funcionaram para mim. Mas essa sequência é quente.

Créditos a esse cara: https://pleasework.robbievance.net/howto-force-really-wsus-clients-to-check-in-on-demand/

Remover response headers do IIS

julho 28th, 2020 by franklin Sem comentários »

Seguindo as boas práticas de segurança, e recomendado esconder alguns cabeçalhos de retorno http, em que informam versões dos serviços oferecidos no servidor, como versão do IIS, do PHP e do ASP.net.

Para desativar o cabeçalho do php, altere a tag expose_php no php.ini para Off.

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = Off

Já para remover o header ‘Server’, é possível criar uma regra com o url rewrite, no IIS, alterando o valor do RESPONSE_Server, deixando oculto ou com alguma outra informação que desejar. No exemplo abaixo, alterei o valor padrão para IIS.

<rewrite>    
  <outboundRules rewriteBeforeCache="true">
    <rule name="alteraServerHeader">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="IIS" />
    </rule>
  </outboundRules>
</rewrite>

Para remover o header ‘X-Powered-By’, que o asp.net deixa por padrão, informando que o site oferece suporte ao asp.net, é possível fazer direto na interface gráfica do IIS, da versão 8 à 10, clicando no servidor, depois em ‘HTTP response headers’ e removendo o valor X-Powered-By ASP.NET.

E por fim, para remover a versão do asp.net, também é possível fazer no IIS, clicando no servidor, depois em ‘configuration editor’, na seção altere para ‘system.web/httpRuntime’ e mude o valor da chave enableVersionHeader para False.

As dicas foram feitas com base no link abaixo
https://www.saotn.org/remove-iis-server-version-http-response-header/

Verificando espaço das tabelas de uma base SQL Server

novembro 7th, 2019 by franklin Sem comentários »

Para verificar o espaço utilizado em todas as tabelas de um banco SQL Server, rode a seguinte query no banco

SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID &gt; 255 
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    UsedSpaceMB DESC

Salve StackOverflow: https://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database

Veja também: Pegar tamanho das bases no SQL Server

Popular dados em uma tabela sql server

novembro 5th, 2019 by franklin Sem comentários »

Caso precise fazer algum tipo de teste que seja necessário popular dados em uma tabela SQL Server, é possível executar o seguinte script para criar a tabela e já ‘inflar’ com os dados para testes. Os campos serão populados com datas aleatórias.

SQL da criação da tabela

CREATE TABLE dbo.TestTableSize
(
 MyKeyField VARCHAR(10) NOT NULL,
 MyDate1 DATETIME NOT NULL,
 MyDate2 DATETIME NOT NULL,
 MyDate3 DATETIME NOT NULL,
 MyDate4 DATETIME NOT NULL,
 MyDate5 DATETIME NOT NULL
)

SQL para popular os dados na tabela recém criada

-- Declara os tipos de variáveis que iremos utilizar
DECLARE @RowCount INT
DECLARE @RowString VARCHAR(10)
DECLARE @Random INT
DECLARE @UPPER INT
DECLARE @LOWER INT
DECLARE @InsertDate DATETIME
 
 
SET @LOWER = -730 --configura a data até 2 anos para trás(365*2)
SET @UPPER = -1 --configura a data no máximo até 1 dia atrás
SET @RowCount = 0 --configura a contagem de linhas
 
-- while para popular os dados na tabela
WHILE @RowCount < 3000000
BEGIN
	-- paranauê para calcular a data para inserção
	SET @RowString = CAST(@RowCount AS VARCHAR(10))
	SELECT @Random = ROUND(((@UPPER - @LOWER -1) * RAND() + @LOWER), 0)
	SET @InsertDate = DATEADD(dd, @Random, GETDATE())
 
	INSERT INTO TestTableSize
		(MyKeyField
		,MyDate1
		,MyDate2
		,MyDate3
		,MyDate4
		,MyDate5)
	VALUES
		(REPLICATE('0', 10 - DATALENGTH(@RowString)) + @RowString
		, @InsertDate
		,DATEADD(dd, 1, @InsertDate)
		,DATEADD(dd, 2, @InsertDate)
		,DATEADD(dd, 3, @InsertDate)
		,DATEADD(dd, 4, @InsertDate))
 
	SET @RowCount = @RowCount + 1
END

Fiz um resumão do link que encontrei:

https://mitchelsellers.com/blog/article/creating-random-sql-server-test-data

Inflexivel

setembro 23rd, 2019 by franklin Sem comentários »

Criar regra de redirecionamento no ARR

maio 22nd, 2019 by franklin Sem comentários »

Neste exemplo será criado o redirecionamento do site siteum.com.br do servidor1 para o servidor2

Passos:

  • No servidor onde está instalado o proxy, selecione o domínio, após clique em URL Rewrite
  • Após clique em Add Rule(s), e na janela que abrir clique em Reverse Proxy, e então ok.
  • Na nova janela, em Inbound Rules, insira o endereço para onde o site será redirecionado, no caso será para o servidor servidor2, informamos o endereço, sitedois.com.br
  • Marcamos a opção de rewrite na parte inferior, em Outbound Rules, o campo from deve ser habilitado para edição, deixamos o default, que agora deve ser sitedois.com.br
  • Em to, informamos siteum.com.br, então clicamos em ok Essa configuração de outbound é para a resposta do servidor servidor2, tudo que contiver o endereço sitedois.com.br irá para siteum.com.br, isso pode ser visualizado no código fonte do site, por exemplo.
  • Com as regras criadas, uma na parte do Inbound, e a outra no Outbound, clicamos 2x na regra que está no Outbound
  • No quadrante “Match”, alteramos onde diz “match the content within”, todas as opções devem ser selecionadas dentro drop down, com exceção da última, “use custom tags”. Feito isso clica-se em aplicar. Essa configuração faz o rewrite de todos os links no código fonte.

Configurar Application Request Routing para proxy

maio 22nd, 2019 by franklin Sem comentários »
  • Instalar UrlRewrite: https://www.iis.net/downloads/microsoft/url-rewrite
  • Instalar o ARR(Application Request Routing): https://www.iis.net/downloads/microsoft/application-request-routing

    Após instalar abra o IIS, clique no servidor, no lado direito na parte de IIS, clique 2x em “Application Request Routing Cache” e então clique em “server proxy settings”, no menu no lado direito, marque a opção “enable proxy” e clique em aplicar.

    Para o proxy funcionar é necessário que o servidor de destino do redirecionamento tenha a opção de compactação de arquivos desabilitada (gzip desativado)

    Para sites que tenham regras de rewrite funcionem, é necessário alterar as opções abaixo:
  • No IIS, selecionar o servidor, na seção “editor de configurações”, clicar 2x
  • No editor de configurações, informar na parte superior, onde diz seção, o seguinte: system.webServer/proxy

    Na lista de opção alterar os itens
  1. preserverHostHeader: True
  2. reverseRewriteHostInResponseHeaders: False

Consultar restituição do imposto de renda

março 12th, 2019 by franklin Sem comentários »

No link https://servicos.receita.fazenda.gov.br/Servicos/ConsRest/Atual.app/paginas/index.asp

Entra com teu cpf e digita o código de caracteres ao lado.

Calculando os feriados nacionais com PHP

março 8th, 2019 by franklin 3 comments »

Abaixo uma função que calcula uma lista de feriados nacionais do ano corrente até 2037. A mágica dos feriados dinâmicos, que tem como base a páscoa, é feita com a função easter_date() do PHP.



<?
function dias_feriados($ano = null){
  if ($ano === null){
    $ano = intval(date('Y'));
  }
 
  $pascoa     = easter_date($ano); // Limite entre 1970 a 2037 conforme 
 http://www.php.net/manual/pt_BR/function.easter-date.php
  $dia_pascoa = date('j', $pascoa);
  $mes_pascoa = date('n', $pascoa);
  $ano_pascoa = date('Y', $pascoa);
 
  $feriados = array(
    // Datas Fixas dos feriados brasileiros
    'Ano Novo' => mktime(0, 0, 0, 1,  1,   $ano), // Confraternização Universal - Lei nº 662, de 06/04/49
    'Tiradentes' => mktime(0, 0, 0, 4,  21,  $ano), // Tiradentes - Lei nº 662, de 06/04/49
    'Dia do Trabalhador' => mktime(0, 0, 0, 5,  1,   $ano), // Dia do Trabalhador - Lei nº 662, de 06/04/49
    'Independência do Brasil' => mktime(0, 0, 0, 9,  7,   $ano), // Dia da Independência - Lei nº 662, de 06/04/49
    'Nossa Senhora Aparecida' => mktime(0, 0, 0, 10,  12, $ano), // N. S. Aparecida - Lei nº 6802, de 30/06/80
    'Finados' => mktime(0, 0, 0, 11,  2,  $ano), // Todos os santos - Lei nº 662, de 06/04/49
    'Proclamação da República' => mktime(0, 0, 0, 11, 15,  $ano), // Proclamação da republica - Lei nº 662, de 06/04/49
    'Natal' => mktime(0, 0, 0, 12, 25,  $ano), // Natal - Lei nº 662, de 06/04/49
 
    // Essas datas dependem da páscoa
    'Segunda de Carnaval' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48,  $ano_pascoa),//2ºferia Carnaval
    'Terça de Carnaval' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47,  $ano_pascoa),//3ºferia Carnaval	
    'Sexta-feira da Paixão' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 ,  $ano_pascoa),//6ºfeira Santa  
    'Páscoa' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa     ,  $ano_pascoa),//Pascoa
    'Corpus Christi' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60,  $ano_pascoa),//Corpus Cirist
  );
 
  asort($feriados);
 
  return $feriados;
}
 
$ano_=date("Y"); //ano corrente
for($i=$ano_; $i <= 2037; $i++){
	echo "=========== ANO $i ===========\n";
	foreach(dias_feriados($i) as $descricao => $data){
		echo date("d-m-Y",$data)." => $descricao\n";
	}
	echo "\n";
}
 
?>

Peguei a base do código de https://www.codigofonte.com.br/codigos/funcao-que-calcula-os-feriados-brasileiros-em-php