如何在Powershell中使用Get-Date的.AddMonths方法

Hay*_*nan 4 powershell date

我正在编写一个简单的脚本,用于获取日期、获取 6 个月后的日期,并将这两个日期复制到剪贴板。运行时,脚本应该复制:

Terminated MM/dd/yy - Delete from AD on MM/dd/yyyy
但它只是复制
Terminated MM/dd/yyyy - Delete from AD on

$currentDate = Get-Date -Format "MM/dd/yyyy"
$futureDate = Get-Date.AddMonths(6) -Format "MM/dd/yyyy"
$copyThisText = "Terminated " + $currentDate + " - Delete from AD on " + $futureDate
$copyThisText | clip 
Run Code Online (Sandbox Code Playgroud)

Ott*_*ter 5

它失败的原因是,一旦使用-Format "MM/dd/yyyy"它格式化日期,就会将该变量转换为 的类型string,而不是datetime意味着普通datetime方法不再可用。

出于演示目的,我尝试尽可能少地进行更改。我下面所做的是设置$currentDateand$futureDate而不将它们隐式转换为字符串。然后,当您连接 中的字符串时,我会按照您想要的方式格式化它们$copyThisText

这将做你想做的事。

$currentDate = Get-Date
$futureDate = (Get-Date).AddMonths(6) 
$copyThisText = "Terminated " + $currentDate.tostring("MM/dd/yyyy") + " - Delete from AD on " + $futureDate.tostring("MM/dd/yyyy")
$copyThisText | clip 
Run Code Online (Sandbox Code Playgroud)

此外,有多种方法可以格式化字符串,这有助于提高代码的可读性。感谢@Santiago Squarzon 的建议 -

"Terminated {0:MM/dd/yyyy} - Delete from AD on {1:MM/dd/yyyy}" -f $currentDate, $futureDate
Run Code Online (Sandbox Code Playgroud)

  • 有帮助,但请注意,@HaydenHeffernan 代码的唯一问题是此命令:`Get-Date.AddMonths(6) -Format "MM/dd/yyyy"`,可以使用以下命令修复:`Get-Date (Get-Date) ).AddMonths(6) - 格式“MM/dd/yyyy”`。换句话说:问题主要是语法问题,而不是(过早)转换为字符串,因为“$currentDate”和“$futureDate”都仅用作_strings_。 (2认同)