0

何か間違っているかどうかはわかりませんが、期待した結果が得られません。

UTC 日付/時刻値を返す次の関数があるため、ローカル マシンとリモート マシンの両方を要求できます。

function Get-UTCTime {
     Param([string]$computername=$env:computername)

    $utc = Get-WmiObject win32_utctime -ComputerName $computername 

        return $sysdt = ([string]$utc.month + "/" + [string]$utc.day + "/" + [string]$utc.year + " " + [string]$utc.hour + ":" + [string]$utc.minute + ":" + [string]$utc.second)

}

      [datetime]$lsysdt = Get-UTCTime "."
        Write-Host "Local:" $lsysdt

      [datetime]$rsysdt = Get-UTCTime $computer 
        Write-Host "Remote:" $rsysdt.addminutes(6)

        $tester1 = $lsysdt - $rsysdt 
        $tester2 = New-TimeSpan -Start $lsysdt -End $rsysdt 

        Write-Host "Tester 1" $tester1 
        Write-Host "Tester 2" $tester2 

私の結果は次のとおりです

Local: 6/21/2013 6:06:43 PM
Remote: 6/21/2013 6:12:45 PM
Tester 1 -00:00:02
Tester 2 00:00:02

時間に 6 分 2 秒の差があることがわかりますが、結果として返される値には秒しか表示されません。

tester1 変数のすべてのプロパティを展開しましたが、分が含まれていることがわかりません。

Ticks             : -20000000
Days              : 0
Hours             : 0
Milliseconds      : 0
Minutes           : 0
Seconds           : -2
TotalDays         : -2.31481481481481E-05
TotalHours        : -0.000555555555555556
TotalMilliseconds : -2000
TotalMinutes      : -0.0333333333333333
TotalSeconds      : -2

日時の比較で欠けている単純な小さな概念は何ですか?

4

2 に答える 2

0

なんてこった...私は私の問題を参照してください。

addminutes() メソッドは、実際に格納されている変数ではなく、ホストの出力にのみ追加されていました。

ため息...私がそれに取り組んでいたときに遅くまで。

[datetime]$lsysdt = Get-UTCTime "."
    Write-Host "Local:" $lsysdt

[datetime]$rsysdt = Get-UTCTime $computer 
    Write-Host "Remote:" $rsysdt.addminutes(-3)

    $dtdiff = New-TimeSpan -Start $lsysdt -End $rsysdt.addminutes(-3)
    $dtdiffmin = $($dtdiff.TotalMinutes).ToString("n", $dtdiffmin) 
    if ($dtdiffmin -lt [int]-3 -and $dtdiffmin -lt [int] 3) { 
            $timeok = $true 
            } 
            else {
                $timeok = $false
            } 

    if ($timeok -eq $false) {
        Write-Host "Remote System Time Ok:" $dtdiffmin  
于 2013-06-21T20:08:29.603 に答える
0
     function Get-UTCTime {
     Param([string]$computer)
     $computer=$env:COMPUTERNAME

$utc = Get-WmiObject win32_utctime -ComputerName $computer

    return $sysdt = ([string]$utc.month + "/" + [string]$utc.day + "/" + 
    [string]$utc.year + " " + [string]$utc.hour + ":" + [string]$utc.minute + ":" + [string]$utc.second)

    }

  [datetime]$lsysdt = Get-UTCTime "."
    Write-Host "Local:" $lsysdt

  [datetime]$rsysdt = Get-UTCTime $computer
    Write-Host "Remote:" $rsysdt.addminutes(6)
    $newRsysdt = $rsysdt.addminutes(6)

    $tester1 = $lsysdt - $newRsysdt
    $tester2 = New-TimeSpan -Start $lsysdt -End $newRsysdt

    Write-Host "Tester 1" $tester1 
    Write-Host "Tester 2" $tester2 
于 2013-06-21T23:27:03.153 に答える