我想弄清楚为什么这两个字符串不相等。我应该使用更好的运算符吗?
$lastupdated = 调用-webrequest -uri $source |外链-Stream |选择最后修改的字符串
$storeddate = 获取内容 C:\windows ile.txt
我在将字符串保存到文件时添加了 .ToString() ,现在我的操作员似乎正在工作。
$lastupdated.ToString() | out-file c:\windows\file.txt
$lastupdated -ne $storeddayed
True
确实意味着值不相同,即使它们的基本属性(显示值)看起来相同。
PowerShell 是一种 松散类型的编程,它可以让您“方便地”比较不同类型的两个值。试试这个:
$lastupdated.GetType()
$storeddayed.GetType()
我怀疑
$storeddayed
变量实际上是一个字符串,因为名称暗示它在存储时可能已经丢失了它的 datatime
结构 因为它已经 converted automaticaly 或“手动”为你用ToString()
方法做你的answer。
$storeddayed -ne $lastupdated
还要注意,如果操作符(
$storeddayed
和 $lastupdated
)是 datetime
结构的both,则不是所有详细的[属性](https://learn.microsoft.com/dotnet/api/ system.datetime#properties] 默认显示(考虑时区信息,例如
millisecond
属性)。
换句话说,如果你一次性给出命令:
$lastupdated = Get-Date()
$storeddayed = Get-Date()
它们可能看起来与您显示的一样(作为字符串),但实际上它们在时间上有所不同:
$lastupdated.Millisecond
$storeddayed.Millisecond