Quando eu escrever scripts do PowerShell, muitas vezes tenho encontrado o que eu preciso para fazer referência a data. Por exemplo, eu ocasionalmente escrevi scripts que puxam registros de eventos do Windows a partir de uma determinada data ou scripts que arquivam dados de envelhecimento com base na data em que um arquivo foi criado. Esses são apenas alguns exemplos de como a data pode precisar ser referenciada dentro de um script PowerShell., Neste artigo, eu quero mostrar a vocês alguns truques para trabalhar com datas em PowerShell.

recuperando a data

é simples fazer com que o PowerShell mostre a data actual. Para fazer isso, basta digitar o cmdlet Get-Date. Se você precisa exibir a data de uma certa forma, então PowerShell oferece uma série de opções diferentes para fazê-lo. O método mais simples é usar uma dica de exibição. O parâmetro DisplayHint pode ser definido como data, hora ou DateTime. A imagem abaixo mostra como funciona o cmdlet básico de Get-Date, e alguns exemplos de Uso do parâmetro DisplayHint.,

Se você precisar de um pouco mais de controle sobre a saída, você pode usar o parâmetro formato ou o parâmetro UFormat. O parâmetro formato é usado principalmente quando você precisa colocar a data em um determinado formato para a finalidade de fazer uma comparação. Nós não estaremos usando o parâmetro formato neste artigo, mas ainda é uma boa idéia estar ciente de sua existência.

O parâmetro UFormat é usado mais para fins de exibição. Ele permite que você organize os vários elementos que compõem a data e hora de uma forma de sua escolha., Tudo o que você tem a fazer é adicionar vários caracteres de formatação ao parâmetro UFormat. Os parâmetros que você pode usar incluem:

%M-Month (como um número)
%D — Date
%Y — Year
%a — The day of the week
%Z — The time z, expressed as an offset from UTC or Zulu time. Por exemplo, -5 é hora Oriental nos Estados Unidos.

Você pode ver um exemplo abaixo de como o parâmetro UFormat funciona.

Há duas coisas que vale a pena prestar atenção na imagem acima. Em primeiro lugar, você vai notar que tudo que segue o parâmetro UFormat está entre aspas., Isto é porque eu não estou apenas especificando caracteres de formatação, eu também posso usar texto. Na figura, eu usei uma mistura de texto e caracteres de formatação.

A outra coisa a notar é que apesar de eu viver na costa leste dos Estados Unidos, que normalmente tem um deslocamento de fuso horário de -5, a saída na figura acima mostra o offset as -4. Isto é porque é hora de Verão. Mas não seria bom poder confirmar isso? Na verdade, podemos. Aqui está como é feito:

$a=Get-Date
$A.,IsDaylightSavingTime ()

Como você pode ver na imagem abaixo, PowerShell mostra um valor de True, indicando que é realmente horário de Verão.e o dia do ano?

também podemos usar PowerShell para nos dizer que dia do ano é. Aqui está como isso funciona:

$a=Get-Date
$a. DayOfYear

Se você realmente quiser tornar as coisas interessantes, no entanto, você pode especificar uma data para descobrir em que dia do ano essa data cai. A data que você especificar pode ser passado ou futuro. Aqui está um exemplo:

Get-Date-Year 2018-Month 8-Daye 22).,DayOfYear

pode ver alguns exemplos na imagem abaixo.

fazendo comparações de datas

Como eu disse anteriormente, é possível usar PowerShell para fazer comparações de datas. Embora você possa usar o parâmetro-formato para colocar a data em um formato específico antes de compará-lo com outro valor, fazê-lo nem sempre é necessário. Por exemplo, comparar datas de gravação de arquivos não requer o uso de qualquer formatação especial.,

vamos supor por um momento que você queria comparar a última hora de gravação de um arquivo particular a uma data e hora de sua escolha para ver se o arquivo foi escrito para mais recentemente do que a data especificada.

numa situação como esta, a primeira coisa que temos de fazer é mapear a nossa data-alvo para uma variável. Para fins de demonstração, vou mapear 2 de janeiro de 2017 (que é uma data aleatória), para a variável a$. Eu vou então mapear um arquivo particular para uma variável, que eu vou chamar X$. Será então possível fazer comparações entre os dois., Então aqui estão os comandos que eu vou usar:

$a = (Get-Date-Year 2017-Month 01-Day 02)
$a
$X = Get-ChildItem Readme.txt
$X. LastWriteTime
$ X. LastWriteTime-GT $A

A primeira linha de código mapeia a variável $a para 2 de janeiro de 2017. A linha seguinte simplesmente verifica que a variável contém a data desejada. A terceira linha de código mapeia a variável $X para um arquivo chamado ReadMe.txt. A quarta linha mostra a última hora de gravação do arquivo. A linha final de código faz uma comparação entre as duas datas., Ele vai mostrar True é que o arquivo foi escrito mais recentemente do que 2 de janeiro de 2017. Caso contrário, mostrará um valor de falso. A captura do ecrã abaixo mostra isto em acção. Você também vai notar que eu adicionei outra linha para verificar se a última hora de escrita do arquivo é mais velha do que (-LT) 2 de janeiro de 2017. Fazer duas comparações separadas torna possível ver que a comparação está realmente fazendo o que é suposto fazer.,

Dates in PowerShell: More to learn

PowerShell actually allows you to do far more with regard to date formatting and comparisons than what I have talked about in this article. Se você gostaria de saber mais sobre o uso de datas no PowerShell, um bom lugar para começar é a documentação da Microsoft para o cmdlet Get-Date.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *