0

我正在尝试打印 Microsoft 更新热修复 URL 并更改它们

    $link=Get-MSHotfix|Where-Object {$_.Installedon -gt ((Get-Date).Adddays(-20000))}|Select-Object -Property KBArticle 


foreach($line in $link){

        [String]$line = $line -replace 'http://support.microsoft.com/?kbid=','https://support.microsoft.com/en-us/kb/'


    [String]$line
}

我有问题,因为它像这样打印出来并且没有替换:

@{KBArticle=http://support.microsoft.com/?kbid=3045992}
@{KBArticle=http://support.microsoft.com/?kbid=3045999}
@{KBArticle=http://support.microsoft.com/?kbid=3046017}
@{KBArticle=http://support.microsoft.com/?kbid=3046359}
@{KBArticle=http://support.microsoft.com/?kbid=3046737}

如果我只是在没有 -replace 的情况下打印它,它看起来还可以。

我正在尝试获取知识库文章的完整 URL

我正在尝试创建一个脚本,如果可能的话,将打印出所有带有链接和名称的热修复程序

谢谢

4

1 回答 1

1

是的,您必须构建正则表达式 RegEx101

$link=Get-MSHotfix|Where-Object {$_.Installedon -gt ((Get-Date).Adddays(-20000))}|Select-Object -Property KBArticle 

foreach($line in $link){

        [String]$line = $line -replace "http:\/\/support\.microsoft\.com\/\?kbid=",'https://support.microsoft.com/en-us/kb/'


    [String]$line
}

或者你使用子字符串:

$link=Get-MSHotfix|Where-Object {$_.Installedon -gt ((Get-Date).Adddays(-20000))}|Select-Object -Property KBArticle 


foreach($line in $link){

        [String]$line = 'https://support.microsoft.com/en-us/kb/' + $line.substring(35)


    [String]$line
}

将字符串剪掉前 35 个字符并将其添加到您的网址中。

编辑:

非常有趣,另一种替代方法也有效...

$link=Get-MSHotfix|Where-Object {$_.Installedon -gt ((Get-Date).Adddays(-20000))}|Select-Object -Property KBArticle 

foreach($line in $link){

    [String]$line = $line.replace("http://support.microsoft.com/?kbid=",'https://support.microsoft.com/en-us/kb/')


[String]$line
}

我有点困惑……

如果你使用 -replace ,你必须使用正则表达式,如果你调用函数 .replace() 你需要给出一个字符串。

于 2016-09-01T10:52:14.927 回答