尝试在 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"
答案 0 :(得分:1)
您可以简单地删除 <div>
和 mac.update_vendors() # <- This can take a few seconds for the download
调用并从 foreach 循环中捕获格式化字符串数组。
然后在屏幕上显示并写入文件:
Start-Transcript