Powershell:将日期更改为int?
我有一个cmdlet,它希望日期为Powershell:将日期更改为int?,powershell,Powershell,我有一个cmdlet,它希望日期为int32,而不是标准化输入 Set CTXGroupPolicyConfiguration,RebootScheduleStartDate需要int32-输入。例如,如果我手动将其输入到策略中,它将在明天,1/18/2015作为132055314。这个数字所指的内容都是空白的。这很有趣。我找到了这个网站,在那里他们描述了日期是如何作为dword(uint32)值存储在注册表中的。dword值的创建方式如下: 日期分为年、月和日期 每个值都转换为十六进制值 十六
int32
,而不是标准化输入
Set CTXGroupPolicyConfiguration
,RebootScheduleStartDate
需要int32
-输入。例如,如果我手动将其输入到策略中,它将在明天,1/18/2015
作为132055314
。这个数字所指的内容都是空白的。这很有趣。我找到了这个网站,在那里他们描述了日期是如何作为dword(uint32)值存储在注册表中的。dword值的创建方式如下:
yyyyymmdd
function ConvertFrom-DwordDate([int32]$DwordValue) {
#Ex. $DwordValue = 132055314
#Convert to hex with 8 chars (16bit year + 8bit month + 8bit day)
$hex = $DwordValue.ToString('X8')
#Ex. $hex = 0x07df0112 = 0x07df(year) 0x01 (month) 0x12 (day)
#Convert to date string
$datestring = '{0:D4}\{1:D2}\{2:D2}' -f [convert]::ToUInt32($hex.Substring(0,4),16), [convert]::ToUInt32($hex.Substring(4,2),16), [convert]::ToUInt32($hex.Substring(6,2),16)
#Convert to datetime and output
$datetime = [datetime]::ParseExact($datestring,'yyyy\\MM\\dd',$null)
#Output
$datetime
}
function ConvertTo-DwordDate([datetime]$Date) {
#Convert to combined hex
$combinedhex = '{0:X}{1:X2}{2:X2}' -f $Date.Year, $Date.Month, $Date.Day
#Convert to decimal
$decimal = [convert]::ToUInt32($combinedhex,16)
#Ouput
$decimal
}
ConvertTo-DwordDate -Date (Get-Date).AddDays(1)
132055314
ConvertFrom-DwordDate -DwordValue 132055314
søndag 18. januar 2015 00.00.00
这很有趣。我找到了这个网站,在那里他们描述了日期是如何作为dword(uint32)值存储在注册表中的。dword值的创建方式如下:
yyyyymmdd
function ConvertFrom-DwordDate([int32]$DwordValue) {
#Ex. $DwordValue = 132055314
#Convert to hex with 8 chars (16bit year + 8bit month + 8bit day)
$hex = $DwordValue.ToString('X8')
#Ex. $hex = 0x07df0112 = 0x07df(year) 0x01 (month) 0x12 (day)
#Convert to date string
$datestring = '{0:D4}\{1:D2}\{2:D2}' -f [convert]::ToUInt32($hex.Substring(0,4),16), [convert]::ToUInt32($hex.Substring(4,2),16), [convert]::ToUInt32($hex.Substring(6,2),16)
#Convert to datetime and output
$datetime = [datetime]::ParseExact($datestring,'yyyy\\MM\\dd',$null)
#Output
$datetime
}
function ConvertTo-DwordDate([datetime]$Date) {
#Convert to combined hex
$combinedhex = '{0:X}{1:X2}{2:X2}' -f $Date.Year, $Date.Month, $Date.Day
#Convert to decimal
$decimal = [convert]::ToUInt32($combinedhex,16)
#Ouput
$decimal
}
ConvertTo-DwordDate -Date (Get-Date).AddDays(1)
132055314
ConvertFrom-DwordDate -DwordValue 132055314
søndag 18. januar 2015 00.00.00
我知道这是一篇可笑的老帖子,但它是谷歌上对“powershell获取日期为int”的最高回应
我知道这是一篇可笑的老帖子,但它是谷歌上对“powershell获取日期为int”的最高回应
首先要做的是找出它的增量。如果你在2015年1月19日投入,你会得到什么?每天增加1。2015年1月19日是132055315。首先要做的是找出它的增量。如果你在2015年1月19日投入,你会得到什么?每天增加1。2015年1月19日是132055315。令人印象深刻的弗罗德F。!非常感谢。令人印象深刻的弗罗德F。!非常感谢。这是必要的吗?对于我们正在做的事情是的,这就是为什么我们在寻找如何做到这一点。您可以从注册表中获取dword值并将十六进制转换为整数,但如果您跨越月份边界,则无法对整数进行计算。addDays是必要的吗?对于我们正在做的事情,是的,这也是我们正在寻找如何做的原因。您可以从注册表中获取dword值并将十六进制转换为int,但如果您跨越了月份边界,则无法对int进行计算。