【发布时间】:2020-12-30 17:51:02
【问题描述】:
尝试简化 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"
【问题讨论】:
-
我不认为这是由冗长或调试偏好引起的。它看起来像标准的成绩单数据。从版本 5 开始,脚本开始包括这些冗长的标题等...为什么不切换到使用 Out-File 等简单地将输出写入日志?
标签: powershell