Powershell:将combobox.SelectedItem转换为时间值,以在任务调度程序的触发器中使用

时间:2018-02-10 19:28:10

标签: powershell

我的问题是如何将从组合框中选择的小时和分钟转换为我可以在脚本中输入的用于创建任务计划程序的时间值。我有通过月份日历选择日期的方法,唯一的问题是小时和分钟

write-host 'datum:   ' $dateTimePickerDatum.SelectionRange.Start.ToShortDateString()
         write-host 'Hour:  ' $DropDownUur.SelectedItem.ToString()
         write-host 'Min:  ' $DropDownMin.SelectedItem

$action = New-ScheduledTaskAction -Execute 'c:\Users\plc\Desktop\script.bat'
$trigger =  New-ScheduledTaskTrigger -Once $dateTimePickerDatum.SelectionRange.Start.ToShortDateString() -At ($DropDownUur.SelectedItem.ToString()):($DropDownMin.SelectedItem.ToString())
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Bestand verplaatser" -Description "Het verplaatsen van bestand op gewenste tijdstip" 

1 个答案:

答案 0 :(得分:0)

$DropDownUur.SelectedItem.ToString()$DropDownMin.SelectedItem遇到的示例是什么?小时数字?即“04”是24小时格式?即“14”

您需要将其转换为[datetime]参数所采用的System.DateTime-At格式。 例子:

  • “4:45”=今天凌晨4:45
  • “下午4:45”=今天下午4:45
  • “16:45”=今天下午4:45

根据我的信息,它可能取决于如何给出小时格式。 -at后面的值可以($DropDownUur.SelectedItem.ToString()+":"+$DropDownMin.SelectedItem.ToString())猜测两者都是数字。如果您需要AM / PM,如果小时是12小时格式化,那么您只需要将其添加到字符串concat。 ($DropDownUur.SelectedItem.ToString()+":"+$DropDownMin.SelectedItem.ToString()+" PM")

整行:

$trigger =  New-ScheduledTaskTrigger -Once $dateTimePickerDatum.SelectionRange.Start.ToShortDateString() -At ($DropDownUur.SelectedItem.ToString()+":"+$DropDownMin.SelectedItem.ToString())

更新

另外,我也应该重新组织日期。日期和时间需要在-At切换之后。你只在这里使用-Once和-At开关。查看New-ScheduledTaskTrigger的文档,了解需要采取的措施。日期需要在-At切换之后像这样的时间:

修正:

$trigger =  New-ScheduledTaskTrigger -Once -At ($dateTimePickerDatum.SelectionRange.Start.ToShortDateString() + " " + $DropDownUur.SelectedItem.ToString()+":"+$DropDownMin.SelectedItem.ToString())

现在制作的有效字符串是“11/02/18 4:45”,它是[datetime]格式/结构,由-At

读入