问题
我正在编写PowerShell脚本来验证我正在创建的某些IIS Web应用程序的HTTP状态。我需要首先确定应用程序的URL,以便我可以在其上运行HTTP请求。
使用Get-WebURL
并定位正确的路径,我可以检索我要查找的信息的总和:
@ {ResponseUri = http://localhost/WebApplication1/;状态= OK;描述= OK}
我的正则表达式试图从此字符串中提取URL。使用RegExr(http://regexr.com/),我测试了正则表达式并验证它是否有效:
脚本(一些逻辑评论,所以我可以专注于正则表达式):
Param([Parameter(Mandatory=$True,Position=1)]
[string]$name,
[Parameter(Mandatory=$False,Position=2)]
[string]$site = "Default Web Site" #default value if none specified
)
$path = "IIS:\Sites\$site\$name"
$url = Get-WebURL -PSPath $path
$urlFound = '/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm'
$urlNew = $url -replace $urlFound,'$1'
$urlWTF = $url -match $urlFound
#$httpRequest = [System.Net.WebRequest]::Create("$urlNew") #create request
#$httpResponse = $httpRequest.GetResponse() #get response from site
#$httpStatus = [int]$httpResponse.StatusCode #get HTTP code as an integer
if ($httpStatus -eq 200) #if code = 200
{
("*** '{0}' is OK ***`n" -f ($path) ) | write-host -ForegroundColor Blue
}else
{
("*** '{0}' may be down ***`n" -f ($path) ) | write-host -ForegroundColor Red
}
Write-host $url
Write-Host $urlNew
Write-Host $urlWTF
#$httpResponse.Close() #clean the HTTP request
- 我的正则表达式只是重复'$ url'值。它也显示没有匹配.--
问题
我一直在尝试Stack Overflow和各种在线资源中的许多例子,但似乎没有任何工作
有什么明显我在这里失踪可能导致我的正则表达式保持闲置吗?我在这一点上很难过。