gpt4 book ai didi

datetime - 如何在 PowerShell 中将 DateTime 作为参数传递?

转载 作者:行者123 更新时间:2023-12-02 06:53:57 24 4
gpt4 key购买 nike

我有一个脚本正在调用另一个脚本并随之传递参数。每当我尝试传入日期时间时,日期时间的一部分都会用作其他参数的参数。

脚本1.ps1

$dateEnd = Get-Date "12/31/14"
$siteUrl = "http://foo.com"
$outputPath = "c:\myFolder"

$argumentList = "-file .\script2.ps1", "test1", $dateEnd, $siteUrl, $outputPath
Start-Process powershell.exe -ArgumentList $argumentList

脚本2.ps1

param
(
[string]$test1,
[DateTime]$dateEnd,
[string]$siteUrl,
[string]$outputFile
)

$test1
$dateEnd
$siteUrl
$outputFile

Read-Host -Prompt "Press Enter to exit"

这将导致:

test1
Wednesday, December 31, 2014 12:00:00 AM
00:00:00
http://foo.com

编辑 - 字符串作为日期,我的拼写错误:

如果我传递字符串 12/31/14 它工作正常,但我希望能够传递日期。

最佳答案

在分配 $argumentList 的行中,将 $dateEnd 参数更改为 $dateEnd.toString('s')

Windows 进程的参数是字符串,而不是对象,因此 Start-Process必须将 ArgumentList 转换为字符串。然后,Powershell.exe 通过空格分割来解析该字符串(就像任何 Windows 进程一样),并将其返回为您的参数。

通常情况下,这应该工作得很好,但在这种情况下,请注意运行 (get-date).tostring() 时会发生什么。 DateTime 对象的默认输出包含空格,这会干扰解析。

解决方案是将参数列表中的日期参数格式化为没有空格,但仍采用 DateTime::Parse() 可以理解的格式(以便 PowerShell 可以在另一端重新加载变量) 。将 's' 传递给 DateTime::toString() 即可获得这样的格式。

关于datetime - 如何在 PowerShell 中将 DateTime 作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com