powershell - New-TimeSpan:无法使用指定的命名参数解析参数集
问题描述
我是 Powershell 新手(一般是编码新手)。我想做的是:用户应该能够输入日期。Powershell 应该与明年 12 月 6 日之前的天数相呼应。
示例:输入是 20/01/2017,输出应该是到 2018 年 6 月 12 日的剩余天数。
当我这样做时它工作得很好,$days = New-TimeSpan -End (Get-Date -Year $inputdate3 -Month 12 -day 6)
但我想用我的字符串替换这个 cmdlet。
我的代码是:
$inputdate = Read-Host "Please enter the current date [DD/MM/YYYY] :"
$inputdate = [DateTime]::Parse($inputdate)
$inputdate2 = $inputdate.AddYears(1)
$inputdate3 = $inputdate2.Year
$days = New-TimeSpan -Start $inputdate -End $inputdate3 -Month 12 -Day 6 | ForEach-Object {$_.days}
echo "$days"
但我得到这个错误:
New-TimeSpan :无法使用指定的命名参数解析参数集。在 C:\Users\Asli\Desktop\O2P2_Version1_2.ps1:96 char:13 + $days = New-TimeSpan -Start $inputdate -End $inputdate3 -Month 12 ... + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [New-TimeSpan], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.NewTimeSpanCommand
解决方案
正如AdminOfThings在评论中指出的那样,您的问题是使用不兼容的参数之一:
PowerShell 将可与给定命令一起使用的参数分组为所谓的参数集。
只有所有属于参数集之一的参数才能在给定的命令调用中一起使用。
在您的情况下,-Start
and -Month
,例如,属于不同的参数集,这会提示您看到的错误。
检查命令参数集的最简单方法是使用Get-Command -Syntax
(您也可以-?
在简洁的命令行帮助的上下文中显示语法图,或者Get-Help
在更丰富的帮助的上下文中;命令的在线帮助主题显示参数也设置):
PS> Get-Command -Syntax New-TimeSpan
New-TimeSpan [[-Start] <datetime>] [[-End] <datetime>] [<CommonParameters>]
New-TimeSpan [-Days <int>] [-Hours <int>] [-Minutes <int>] [-Seconds <int>] [<CommonParameters>]
如您所见,有 2 个参数集:-Start
and-End
形式一个,and -Days
,-Hours
,-Minutes
和-Seconds
另一个。
请注意,您根本不需要使用New-TimeStamp
,因为减去两个实例会[datetime]
隐式生成一个[timespan]
表示两个日期之间的时间跨度(差异)的实例。
因此,您可以按如下方式简化代码:
$inputDate = [datetime]::Parse((Read-Host "Please enter a start date [DD/MM/YYYY]"))
$refDate = Get-Date -Day 6 -Month 12 -Year ($inputDate.Year + 1)
$days = ($refDate - $inputDate).Days
推荐阅读
- azure - mscorlib:Microsoft.Azure.WebJobs.Host:无效的存储帐户请确保您的凭据正确
- go - 读取文件中的多个 yaml
- javascript - 制作下拉菜单以选择数组中的对象?
- java - Java 构造函数在所需对象之前创建许多空实例
- python - 带有控制台日志记录的 RotatingFileHandler
- swift - 3D 模型在 Xcode 中使用 ARKit 不稳定
- ios - 数据更改后刷新视图
- javascript - 'Vue.js' 父子间通信错误
- python - 如何在 Python 中写入空文件之前检查条件?
- java - 将本地文件夹复制到 SMB 服务器文件夹