$mbservers = @("server1", "server2")

Foreach ($mbserver in $mbservers) {
    #Check for reg key
    Invoke-Command -Computername $mbserver -Credential $credsschedtask -ScriptBlock {
        $regkey = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck"
        $checkregkey = (Test-Path $regkey)

        If ($checkregkey = "True") {
            Write-Host "'DisableLoopbackCheck' key exists on $mbserver".
        }
        ElseIf ($checkregkey = "False") {
            Write-Host "'DisableLoopbackCheck' key does not exist on $mbserver."
        }
        Else {
            Write-Host "Unable to confirm if 'DisableLoopbackCheck' key exists on $mbserver."
        }
    }
}

Próbuję ćwiczyć zmienną Write-Host, aby wyświetlała server1 itd. (Write-Host "'DisableLoopbackCheck' key exists on $mbserver".)

Próbowałem następujących na różne sposoby:

  • For($i=0; $i -le $mbservers.getupperBound(0);$i++){
  • write-host $mbservers[$i]
  • write-host "line 2 :," $mbservers[$i]

Byłbym wdzięczny za jakąkolwiek pomoc.

1
kuat 20 listopad 2018, 15:12

1 odpowiedź

Najlepsza odpowiedź

Twoje porównania If i ElseIf nie działają w tej chwili:

  • = służy do ustawiania wartości, -eq służy do ich porównywania
  • Test-Path nie zwraca ciągu "True", zwraca bool $True

Ponieważ bool ma tylko dwa stany $True lub $False, potrzebujesz tylko If/Else:

Foreach ($mbserver in $mbservers) {
    #Check for reg key
    Invoke-Command -Computername $mbserver -Credential $credsschedtask -ScriptBlock {
        $checkregkey = Test-Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck"

        If ($checkregkey -eq $True) {
            Write-Host "'DisableLoopbackCheck' key exists on $mbserver".
        }
        Else {
            Write-Host "'DisableLoopbackCheck' key does not exist on $mbserver."
        }
    }
}
1
James C. 20 listopad 2018, 15:36