正则表达式不更改输出

时间:2016-06-02 21:30:18

标签: regex powershell iis httpwebrequest

问题
我正在编写PowerShell脚本来验证我正在创建的某些IIS Web应用程序的HTTP状态。我需要首先确定应用程序的URL,以便我可以在其上运行HTTP请求。

使用Get-WebURL并定位正确的路径,我可以检索我要查找的信息的总和:

  

@ {ResponseUri = http://localhost/WebApplication1/;状态= OK;描述= OK}

我的正则表达式试图从此字符串中提取URL。使用RegExr(http://regexr.com/),我测试了正则表达式并验证它是否有效: online regex tester

脚本(一些逻辑评论,所以我可以专注于正则表达式):

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

输出:
enter image description here

- 我的正则表达式只是重复'$ url'值。它也显示没有匹配.--

问题
我一直在尝试Stack Overflow和各种在线资源中的许多例子,但似乎没有任何工作 有什么明显我在这里失踪可能导致我的正则表达式保持闲置吗?我在这一点上很难过。

0 个答案:

没有答案