2016-04-15 3 views
0

Так как я немного забывчивый, я делаю простой сценарий Powershell, который напомнит мне о некоторых определенных вещах в данный момент времени. Ниже мой код, который идет в бесконечные петли.Простой сценарий напоминания не работает

$whsehll = New-Object -ComObject Wscript.shell 
$Reminder = Read-Host "What time do you want a reminder of?" 
$Subject = Read-Host "What do you want me to remind you?" 
$Time = Get-Date -Format hh:mm 
do { 
    Start-Sleep -Seconds 1 
    }while (($Reminder -ge $Time)) 
    $whsehll.Popup("Hello, I am here to remind you of $Subject") 

Я сделал все пропуски, но я не могу это обработать.

P.S. Сначала я запускал команду Get-date в powershell и получал временную диаграмму как 03:00 вместо 15: 00hrs, поэтому я предполагаю, что userinput также должен быть в 12-часовом шаблоне часов?

P.P.S. Я пробовал другие обходы, например, переключаясь с параметрами -gt -ge -lt -le, но ни один из них не работает. Пожалуйста помоги.

+0

Пожалуйста, обратите внимание, что сценарий, переходит в бесконечные циклы, даже если заданное время истекло. – Ashish

+0

Работала здесь для штрафа как '01: 30', так и' 1: 30' (в момент '13: 38'), при запуске внутри ISE. – Martin

+0

@ Martin, это здорово, это значит, что у моего кода orignal не было никаких проблем, но я не уверен, почему это не работает со мной. И, да, так что попробуйте это на ISE. – Ashish

ответ

0

Изменить следующие

$Time = Get-Date -Format hh:mm 
do { 
    Start-Sleep -Seconds 1 

в

do { 
    Start-Sleep -Seconds 1 
    $Time = Get-Date -Format hh:mm 

и он будет работать.

Вы должны принять ток раз каждый цикл, и не сравнить с Начальным временем, когда введен в цикл. Или используйте HH: mm для 24-го формата, как указано в AgentK.

Обратите внимание, что если $ reminder ist 02:34, он уведомит вас в 02:35 из-за -ge вместо - gt (или 14: 34/35 при использовании HH: mm as Format).

Для меня это легче читать/понимать просто использовать While Loop:

$wshshell = New-Object -ComObject Wscript.shell 
$Reminder = Read-Host "What time do you want a reminder of?" 
$Subject = Read-Host "What do you want me to remind you?" 
while ($Reminder -gt (Get-Date -Format HH:mm)) 
{ 
    Start-Sleep -Seconds 1 
} 
$wshshell.Popup("Hello, I am here to remind you of $Subject") 
+0

Отлично, это сработало, интересно, как это работает? Видите ли, мы уже объявили значения в начале, когда время напоминания не изменилось, и декларация времени, которая была передана, получит время только в формате hh: mm, правильно? Извините, я не мог проголосовать за ваш ответ, поскольку состояние репутации, но спасибо за ваш ответ, это помогло мне исправить это.:) – Ashish

+0

Нет, только один раз, потому что он не был внутри цикла. Ive отредактировал вариант с использованием 'while' вместо' do .. while'. Возможно, его легче читать/использовать. – Martin

+0

, еще одна вещь, мы передали параметр stging -ge, который является> =, но как оно отображается, только после завершения времени, которое будет использовать параметр по умолчанию как -gt, а не -ge. Итак, в чем смысл использования/-ge? – Ashish

-2

Fixed ваш сценарий немного, и теперь он, кажется, работает:

$whsehll = New-Object -ComObject Wscript.shell 
[datetime]$Reminder = Read-Host "What time do you want a reminder of?" 
$Subject = Read-Host "What do you want me to remind you?" 
$Time = Get-Date 
do { 
    Start-Sleep -Seconds 1 
    } 
while ($Reminder -ge $Time) 
$whsehll.Popup("Hello, I am here to remind you of $Subject") 

PS. Если вы используете формат времени 24H вы хотите использовать капитал H, как HH: мм

+0

'Get-date -Format' создает строку, поэтому оригинальная публикация alrady сравнивает те же типы данных (две строки). – Martin

+0

@AgentK, извините, что тоже не сработал. Извините, но я не получил логики, потому что, думаю, команда Get-date будет вытаскивать все данные даты и времени, где, как и в я просто хочу HH: MM – Ashish

+0

@Martin, Спасибо за ваш вклад, но сделал вы пытаетесь ввести точный код, который я вставил в вопрос, и это сработало для вас? Или вы внесли какие-либо изменения? – Ashish

Смежные вопросы