Powershell – DCDIAG via Powershell FR et EN

Parser la commande DCDIAG via Powershell. La commande DCDIAG est liée à la langue, le résultat diffère celon celle-ci.

Langue disponible :

  • Français
  • Anglais

Sommaire

OS en français

function Invoke-DcDiag {
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$DomainController
)
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(437)
$res=@()
$regex = [regex] »(?sm)\.+\sLe\stest\s(\w+).+?de\s([A-Za-z0-9_-]+)\sa\s(réussi|échoué) »
$result = dcdiag /s:$DomainController

$allmatches = $regex.Matches($result)

foreach($line in $allmatches){
$ObjectDiag = New-Object System.Object
$ObjectDiag | Add-Member -Type NoteProperty -Name TestResult -Value $line.Groups[3].Value
$ObjectDiag | Add-Member -Type NoteProperty -Name Entity -Value $line.Groups[2].Value
$ObjectDiag | Add-Member -Type NoteProperty -Name TestName -Value $line.Groups[1].Value
$res+=$ObjectDiag
}
return $res
}

$DCDiagResult=Invoke-DcDiag -DomainController MonDC01

$DCDiagResult | Export-Csv « D:\Temp\dcdiag.log » -Encoding Unicode

OS en anglais

function Invoke-DcDiag {
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$DomainController
)

$result = dcdiag /s:$DomainController
$result | select-string -pattern ‘\. (.*) \b(passed|failed)\b test (.*)’ | foreach {
$obj = @{
TestName = $_.Matches.Groups[3].Value
TestResult = $_.Matches.Groups[2].Value
Entity = $_.Matches.Groups[1].Value
}
[pscustomobject]$obj
}
}

$DCDiagResult=Invoke-DcDiag -DomainController MonDC01

$DCDiagResult | Export-Csv « D:\Temp\dcdiag.log » -Encoding Unicode

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *