1

以下が機能しない理由がよくわかりません。基本的に、キーの値に基づく複数の elseif ステートメントがあります。

$valuePassword入力したランダムな文字に等しい設定でサーバーをテストし、 にも設定$valueAutoLoginしました'1'。しかし、私が得た結果は以下のもので、何も表示されませんか?

また、複数のelseifステートメントの代わりに、これを行うより良い方法を考えられますか?

>

clear
Import-Module PSRemoteRegistry
$computers = Get-Content -Path C:\MANNY\Servers.txt

foreach($computer in $computers)
{
Write-Host "Checking $computer"

#Check if key exists
$valuePassword = Get-RegValue -ComputerName $Computer -Key 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Value DefaultPassword
$valueAutoLogin = Get-RegValue -ComputerName $Computer -Key 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Value AutoAdminLogon


if($valuePassword -eq $null -and $valueAutoLogin -eq $null)
{Write-Host "$computer not set"}

elseif($valuePassword -notcontains $null -and $valueAutoLogin -eq $null)
{Write-Host "$computer has Password set"}

elseif($valuePassword -eq $null -and $valueAutoLogin -eq '1')
{Write-Host "$computer has Autologin set but not password"}

elseif($valuePassword -notcontains $null -and $valueAutoLogin -eq '1')
{Write-Host "$computer has Autologin set and password set - AUTOLOGIN IS POSSIBLY SET"}

}

> 結果:

Checking SV160666
Checking SV160668
Checking SV160670
Checking SV160672
Checking SV160674
Checking SV180435
Checking SV193865
Checking SV193885
4

1 に答える 1

1

組み込みメソッドを試してみると、どのような結果が得られますか? elseまた、予期しない値を報告するブランチを追加する必要があります。

Get-Content "C:\MANNY\Servers.txt" | % {
  $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $_)
  $key = $reg.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon")

  $valuePassword  = $key.GetValue("DefaultPassword")
  $valueAutoLogin = $key.GetValue("AutoAdminLogon")

  $key.Close()
  $reg.Close()

  if ($valuePassword -eq $null -and $valueAutoLogin -eq $null) {
    Write-Host "$_ not set"
  } elseif ($valuePassword -ne $null -and $valueAutoLogin -eq $null) {
    Write-Host "$_ has Password set"
  } elseif ($valuePassword -eq $null -and $valueAutoLogin -eq '1') {
    Write-Host "$_ has Autologin set but not password"
  } elseif ($valuePassword -ne $null -and $valueAutoLogin -eq '1') {
    Write-Host "$_ has Autologin set and password set - AUTOLOGIN IS POSSIBLY SET"
  } else {
    Write-Host "$_: unexpected AutoLogin value: $valueAutoLogin"
  }
}
于 2013-05-15T13:13:30.167 に答える