Попытка конвертировать скрипт powershell в VBscript - PullRequest
2 голосов
/ 28 октября 2019

Разобрался с помощью Lee_Dailey & js2010! Спасибо, ребята!

РЕДАКТИРОВАТЬ Я пытаюсь выяснить, почему я получаю ложное срабатывание при развертывании через SCCM на коллекцию компьютеров. Я получаю устройства Несоответствующие, когда на самом деле они есть. Меня попросили предоставить VB-версию сценария операторами SCCM. Я вычеркиваю потенциальные причины.

Я пытаюсь преобразовать функциональность сценария PowerShell в VBScript. Сценарий проверяет токен AzureAdPrt на устройстве, но проблема заключается в выводе этой команды, поскольку она отформатирована в таблице, и я хочу проверить только определенное значение.

Я попытался скопировать технологию на VBScript, но у меня нет с ней опыта.

Код Powershell:

    $dsregcmd = dsregcmd /status
    $PRTDetails = New-Object -TypeName PSObject
    $dsregcmd | Select-String -Pattern " *[A-z]+ : [A-z]+ *" | ForEach-Object {
              Add-Member -InputObject $PRTDetails -MemberType NoteProperty -Name (([String]$_).Trim() -split " : ")[0] -Value (([String]$_).Trim() -split " : ")[1]
         }
$PRT_Status = ($PRTDetails).AzureAdPrt
IF($PRT_Status -eq 'YES'){
    return $True
}ELSE{
    return $False
}

Код VB:

Set oShell = CreateObject ("WScript.Shell")
oShell.run "cmd /c dsregcmd /status"
IF oShell = "AzureAdPrt : YES"
  echo $true
ELSE
  echo $false

Что мне нужно, так это VBScript, который возвращает $ true, если AzureAdPrt равен YES, и $ False, если это не так.

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете попробовать что-то подобное с vbscript: Демо Здесь

Option Explicit
Dim oShell,Data,Extracted_Data
Set oShell = CreateObject ("WScript.Shell")
oShell.run "cmd /c dsregcmd /status > .\AzureLog.txt",0,True
Data = ReadFile(".\AzureLog.txt")
wscript.echo Data
Extracted_Data = Extract(Data)

IF Extracted_Data = "AzureAdPrt : YES" Then
    wscript.echo Extracted_Data & vbCrlf & "True"
Else
    wscript.echo Extracted_Data & vbCrlf & "False"
End If

'---------------------------------------------------------------
Function ReadFile(path)
    Const ForReading = 1
    Dim objFSO,objFile
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(path,ForReading)
    ReadFile = objFile.ReadAll
    objFile.Close
End Function
'---------------------------------------------------------------
Function Extract(Data)
    Dim RegEx,Match,Matches,M
    Set RegEx = New RegExp
    With RegEx
        .Pattern = "\bAzureAdPrt : \w+"
        .IgnoreCase = True
        .Global = True
    End With
    Set Matches = RegEx.Execute(Data)
    'Iterate through the Matches collection.
    For Each Match in Matches
        'We only want the first match.
        M = Match.Value
        Exit For
    Next
    Extract = M
    'Clean up
    Set Match = Nothing
    Set RegEx = Nothing
End Function
'---------------------------------------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...