AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 842794
Accepted
Drifter104
Drifter104
Asked: 2017-04-06 07:52:50 +0800 CST2017-04-06 07:52:50 +0800 CST 2017-04-06 07:52:50 +0800 CST

日期时间变量的 Office365 PowerShell 问题

  • 772

我有以下非常简单的 PowerShell 片段,但它不起作用。

以下作品

Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
    -SenderAddress [email protected] `
    | where {$_.RecipientAddress -like "*example.com*"} `
    | Select-Object SenderAddress, RecipientAddress, Subject 

虽然以下不起作用

$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 

即使我将$dateStartand替换为$dateEnd各种格式,例如MM/dd/yyyy hh:mm:ss.

没有错误,只是没有返回结果,但是我使用where了我知道应该返回一些东西的模式。我还使用今天的日期(这是默认时间-startdate和-enddate未指定的时间)运行了上述(不起作用的示例),但这也不起作用。即使这是工作示例有效使用的内容。

所以我把它缩小到日期,但我看不到问题所在。如果我输入一个错误的日期字符串,至少给出错误,否则什么都没有。任何指针?

exchange
  • 1 1 个回答
  • 746 Views

1 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2017-04-06T08:25:10+08:002017-04-06T08:25:10+08:00

    在您的脚本中,您当前正在使用

    $dateStart = "03/20/2017"
    $dateEnd = "03/27/2017"
    

    因为在这种情况下,值是字符串,Windows PowerShell 将自动使用String数据类型来存储值,而仅使用类型变量。Get-MessageTrace -StartDate-EndDateSystem.DateTime

    您可以使用以下方法设置正确的类型变量Get-Date:

    $dateStart = Get-Date "03/20/2017"
    $dateEnd = Get-Date "03/27/2017"
    

    或者,您可以System.DateTime通过首先指定变量的类型来创建新对象,然后为其分配一个字符串值(如果它是一个可以转换为的值System.DateTime):

    [System.Datetime]$dateStart = "03/20/2017"
    [System.Datetime]$dateEnd = "03/27/2017"
    

    但是,我更喜欢Get-Date它,因为它使您的脚本更具通用性。例如,您可以创建一个始终为您提供过去 7 天信息的脚本:

    $dateEnd = Get-Date
    $dateStart = (($$dateEnd).AddDays(-7))
    
    Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -PageSize 5000 `
        -SenderAddress [email protected] `
        | where {$_.RecipientAddress -like "*example.com*"} `
        | Select-Object SenderAddress, RecipientAddress, Subject 
    

    附加提示:

    您还可以Get-Date用于计算区域选项中定义的短日期格式:

    Get-Date -Format d
    

    它将为您提供和参数所需的正确短日期模式。EndDateStartDate

    • 2

相关问题

  • 如何在使用 RPC over HTTPS 时停止 Outlook 2007 要求提供凭据

  • Exchange 备份的 NT 备份是否会使 Exchange 脱机?

  • 如何在 Exchange 2007 中设置资源邮箱日历的忙/闲权限?

  • Exchange 2007:将带有 SenderID 的邮件移动到垃圾邮件文件夹失败?

  • 如何使用 Exchange 2003 SP2 将垃圾邮件发送到个人垃圾文件夹?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve