这个问题在这里已经有答案:
How do I write the value of a single property of a object?(2个答案)
两小时前就关门了。
两天来,我一直在寻找一个可以限制我玩游戏时间的软件(或者使用任何程序),但我发现没有任何有用的东西,所以我决定把我6年前的编码斗篷放回原处,自己编程。
一位朋友向我推荐了PowerShell,认为这是最简单、最快的方法。我对PowerShell一无所知,但我得出了这样的结论:
gps | ? { $_.MainWindowTitle }
我检查正在运行的进程。然后用一个if子句定义游戏是否正在运行,如果它正在运行,我使用
$StartTime = Get-Process processOfTheGame | select starttime
知道比赛是什么时候开始的。然后我应该使用另一个if子句将其与实际日期进行比较
Get-Date
但我发现了一些问题,将其与Get-Process Process OfTheGame|SELECT StartTime数据类型为PSCustomObject进行比较,因此当我尝试将格式更改为datetype时,它会抛出错误。
所以我需要帮助将$StartTime变量转换为日期类型,然后将其与实际日期进行比较。如果实际日期是2,超过$StartTime,则用以下命令结束程序
Stop-process -name GAME
我试过的东西
$testConversion = [datetime]::ParseExact($StartTime, 'dd/MM/yyyy' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
[datetime]::parseexact($StartTime, 'dd-MMM-yy', $null)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
$Date = get-date $StartTime -Format "dd-MM-yyyy"
+ ~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand
PS> $Obj = ((get-date "10/22/2020 12:51:1") - (get-date "10/22/2020 12:20:1 "))
我试着用“扁平”约会,因为它应该是这样的,但它不是这样的。它既不能与变量StartTime一起使用
PS> $Obj = ((get-date "10/22/2020 12:51:1") - (get-date "10/2 ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand
2条答案
按热度按时间oxcyiej71#
您可以使用[System.Diagnotics.Stopwatch]来启动秒表,并与TimeSpan对象比较所经过的时间。但还有一种简单得多的方法:
这将持续运行,直到检测到该进程->在指定的时间量之后终止该进程。
rur96b6h2#
您非常接近从Get-Process获取DateTime对象。下面是我的系统中的一个示例(我正在运行多个note pad.exe示例,因此$Times是一个数组)。