PS FSRM 모듈을 사용할 수 없기 때문에 2008 R2 파일 서버에서 아래의 코드를 실행하여 할당량 정보를 추출합니다. $RegEx
변수의 문자열을 일치시킬 때 변수에 문자열이 2 개인 경우에만 제대로 작동하며 객체 배열에 $matches[1]
및 $matches[2]
값이 예상대로 추가되지만 세 번째 캡처를 추가하려고하면 이 사건 5가 캡처되면 출력이 전혀 들지 않습니다. $matches
에 아무것도없고 $objArr
에 아무것도 없습니다. 이해가 안 무엇 여러 RegEx 문 일치 및 캡처
$RegEx = 'Quota Path:\s+(.*)[\s\S]*?' +
'Source Template:\s+(.*)\s+' +
'Limit:\s+(.*)\s+' +
'Used:\s+(.*)\s+' +
'Available:\s+(.*)'
$objArr = @()
$objArr = (dirquota qu l | Out-String) -replace '\r\n', "`n" -split '\n\n' |
where {$_ -match $RegEx} |
foreach {
New-Object -TypeName psobject -Property ([ordered]@{
QuotaPath = $matches[1]
Template = $matches[2]
QuotaLimit = $matches[3]
Used = $matches[4]
Availble = $matches[5]
})
}
내가 캡처 및 작동 2의 조합을 다시 정렬 할 수 있습니다, 그래서 바로 내가 3을 추가하려고하거나 캡처 문자열이 어느 정도 정확 보이지만, 더, 나는 아무것도 얻지 않는다. 나는 RegEx 캡쳐 문자열이 포맷 된 방식으로 뭔가를 놓치고 있다고 확신한다. 다음과 같이
dirquota qu l | Out-String
문자열을 출력 : 나는 최근에 $의 유효성이 guarantied되지 파이프 경계에 걸쳐 수집과 일치하는지 대답을 읽어
... Quota Path: E:\DirA\SubdirA\SubdirA1 Share Path: \\SERVER\SubdirA\SubdirA1 \\SERVER\E\DirA\SubdirA\SubdirA1 \\SERVER\DirA\SubdirA\SubdirA1 Source Template: TemplateA (Matches template) Quota Status: Enabled Limit: 500.00 MB (Hard) Used: 6.00 KB (0%) Available: 499.99 MB Peak Usage: 6.00 KB (4/1/2015 12:27 PM) Thresholds: Warning (80%): Event Log Limit (100%): Event Log Quota Path: E:\DirB\SubdirB\SubdirB1 Share Path: \\SERVER\SubdirB\SubdirB1 \\SERVER\E\DirB\SubdirB\SubdirB1 \\SERVER\DirB\SubdirB\SubdirB1 Source Template: TemplateB (Matches template) Quota Status: Enabled Limit: 500.00 MB (Hard) Used: 1.00 KB (0%) Available: 500.00 MB Peak Usage: 1.00 KB (7/12/2016 12:09 PM) Thresholds: Warning (80%): Event Log Limit (100%): Event Log ...
이제 알겠습니다. 나는'. *'이 모든 문자를 다음 문자열까지 매칭시킬 것이라고 생각했지만, 내가 본 것은 새로운 라인에서 매칭을 멈추는 것으로 보았을 까? –
'.'는 개행 문자 *를 제외한 모든 문자와 일치합니다. *,'*'는 이전 표현식을 0 번 이상 수정합니다. –