简化 URL 健康检查 PowerShell 脚本中的日志记录

时间:2020-12-30 02:20:54

标签: powershell

尝试在 URL 健康检查 PowerShell 脚本中简化日志记录。它以我想要的方式工作,除了 Start-Transcript 给出的输出过于冗长且重复。基于此 article,默认调试/详细首选项在 initialSessionState 中设置为 SilentlyContinue,这会阻止输出到主机。但它显示为脚本输出,这是我试图消除的行为。

脚本:

#Place URL list file in the below path
$URLListFile = "C:\Users\Admin\Documents\Scripts\URL Check\URL_Check.txt"
$URLList = Get-Content $URLListFile -ErrorAction SilentlyContinue

#For every URL in the list
Foreach($Uri in $URLList) {
    try{
        #For proxy systems
        [System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
        [System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

        #Web request
        $req = [system.Net.WebRequest]::Create($uri)
        $res = $req.GetResponse()
    }catch {
        #Err handling
        $res = $_.Exception.Response
    }
    $req = $null

    #Getting HTTP status code
    $int = [int]$res.StatusCode

    #Writing to Log file
    Start-Transcript -append -path "C:\Users\Admin\Documents\Scripts\z_Logs\URL Check\URL_Check_log.txt"
    #Writing on the screen
    Write-Host "$int - $uri"
    #Stopping logging
    Stop-Transcript
    
    #Disposing response if available
    if($res){
        $res.Dispose()
    }
}

当前输出:

**********************
Windows PowerShell transcript start
Start time: 20201229205017
Username: ALPHA\Admin
RunAs User: ALPHA\Admin
Configuration Name: 
Machine: OPTIPLEX (Microsoft Windows NT 10.0.18363.0)
Host Application: powershell -executionpolicy bypass -File C:\Users\Admin\Documents\Scripts\URL_Check\URL_Check.ps1
Process ID: 520
PSVersion: 5.1.18362.1171
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.18362.1171
BuildVersion: 10.0.18362.1171
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\Users\Admin\Documents\Scripts\z_Logs\URL_Check\URL_Check_log.txt
200 - https://ems.alpha.local:1443/
**********************
Windows PowerShell transcript end
End time: 20201229205017
**********************
**********************
Windows PowerShell transcript start
Start time: 20201229205017
Username: ALPHA\Admin
RunAs User: ALPHA\Admin
Configuration Name: 
Machine: OPTIPLEX (Microsoft Windows NT 10.0.18363.0)
Host Application: powershell -executionpolicy bypass -File C:\Users\Admin\Documents\Scripts\URL_Check\URL_Check.ps1
Process ID: 520
PSVersion: 5.1.18362.1171
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.18362.1171
BuildVersion: 10.0.18362.1171
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\Users\Admin\Documents\Scripts\z_Logs\URL_Check\URL_Check_log.txt
200 - https://hpna.alpha.local:4443/
**********************
Windows PowerShell transcript end
End time: 20201229205017
**********************
**********************
Windows PowerShell transcript start
Start time: 20201229205018
Username: ALPHA\Admin
RunAs User: ALPHA\Admin
Configuration Name: 
Machine: OPTIPLEX (Microsoft Windows NT 10.0.18363.0)
Host Application: powershell -executionpolicy bypass -File C:\Users\Admin\Documents\Scripts\URL_Check\URL_Check.ps1
Process ID: 520
PSVersion: 5.1.18362.1171
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.18362.1171
BuildVersion: 10.0.18362.1171
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\Users\Admin\Documents\Scripts\z_Logs\URL_Check\URL_Check_log.txt
200 - http://login.microsoftonline.com/
**********************
Windows PowerShell transcript end
End time: 20201229205018
**********************

我正在寻找的简化输出:

200 - https://ems.alpha.local:1443/
200 - https://hpna.alpha.local:4443/ 
200 - http://login.microsoftonline.com/

不确定这是否重要,但我从这样的单行命令文件中调用此脚本(我不想更改):

powershell -executionpolicy bypass -File "C:\Users\Admin\Documents\Scripts\URL_Check\URL_Check.ps1"

1 个答案:

答案 0 :(得分:1)

您可以简单地删除 <div>mac.update_vendors() # <- This can take a few seconds for the download 调用并从 foreach 循环中捕获格式化字符串数组。

然后在屏幕上显示并写入文件:

Start-Transcript