Powershell KML 生成在循环中操作时间戳

Powershell KML Generation Manipulate Timestamp in Loop

我有一段 powershell 代码,如下所示:

$(
foreach ($csv in $csvfiles) {
 $fname = (Get-Item $csv).Basename
 '<Folder>
  <name>{0}</name>' -f $fname
    $(
    Import-Csv $csv | 
    foreach {
    '<Placemark>
     <name>{0} - {1}</name>
     <TimeStamp>
      <begin>{1}</begin>
      <end>{1}</end>
     </TimeStamp>
     <description>Information - {4}</description>
     <styleUrl>#{5}</styleUrl>
     <Point>
      <coordinates>{2},{3}</coordinates>
     </Point>
    </Placemark>

      ' -f $_.Variable, $_.Timestamp, $_.Variable2, $_.Variable3, $_.Variable4, $_.Color
     }
     )
'</Folder>'
   }
)

以上代码有效。我试图让我的地标持续更长的时间,这样如果滑块移出秒字段,它们就不会消失。时间戳的格式为:

2017-07-26T19:03:40Z

有时时间戳会移动到 41 或 39 秒,并且在 Google 地球中移动滑块时,您会丢失地标,因为它以 1 分钟为增量移动...这就是我想。我想通过在实际时间戳上减去和添加 20 秒来为地标设置开始和结束时间戳。我怎样才能使用下面的代码做到这一点?有没有一种简单的方法可以让我在时间戳中减去和添加秒数,并且仍然将其用作该循环中 KML 文件的输入?

也许您可以尝试以下方法来去除秒数:

-f $_.Variable, $($_.Timestamp -replace '^(.*)(\d\d)(.*)$','00'), $_.Variable2, $_.Variable3, $_.Variable4, $_.Color

$() : 允许先计算新值。

-replace regex, newvalue : 用 00.

补秒

第一次捕获时我使用 </code> 以避免 100 美元毫无意义,第二次捕获被替换为 <code>00 第三次捕获保持原样。