Eu tenho o seguinte trecho de código do PowerShell muito simples que simplesmente não funciona.
Os seguintes trabalhos
Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
-SenderAddress [email protected] `
| where {$_.RecipientAddress -like "*example.com*"} `
| Select-Object SenderAddress, RecipientAddress, Subject
Embora o seguinte não funcione
$dateStart = "03/20/2017"
$dateEnd = "03/27/2017"
Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
-SenderAddress [email protected] `
| where {$_.RecipientAddress -like "*example.com*"} `
| Select-Object SenderAddress, RecipientAddress, Subject
Mesmo se eu substituir o $dateStart
e $dateEnd
por vários formatos, comoMM/dd/yyyy hh:mm:ss.
Não há erro, apenas nenhum resultado retornado, no entanto, usei where
padrões que sei que devem retornar algo. Também executei o exemplo acima (exemplo que não funciona) usando a data de hoje (que é o padrão quando -startdate
e -enddate
não são especificados) e isso também não funciona. Mesmo que seja isso que o exemplo de trabalho está efetivamente usando.
Então, reduzi a data, mas não consigo ver o problema. Se eu colocar uma string de data que esteja errada que pelo menos dê um erro, senão nada. Alguma indicação?
No seu script, você está usando atualmente
Como neste caso os valores são cadeias de caracteres, o Windows PowerShell usará automaticamente o
String
tipo de dados para armazenar o valor, enquanto e somente aceita variáveis de tipo.Get-MessageTrace
-StartDate
-EndDate
System.DateTime
Você pode definir a variável de tipo correta usando
Get-Date
assim:Como alternativa, você pode criar um novo
System.DateTime
objeto especificando primeiro o tipo da variável e, em seguida, atribuir um valor de string a ela (se for um valor que pode ser convertido emSystem.DateTime
):No entanto, prefiro
Get-Date
, pois torna seu script mais generalizável. Por exemplo, você pode criar um script que sempre forneça informações sobre os últimos sete dias:Dica adicional:
Você também pode usar
Get-Date
para descobrir o formato de data abreviado definido nas Opções Regionais :Ele fornecerá o padrão de data abreviado correto de que você precisa para seus parâmetros
EndDate
e .StartDate