Я пытаюсь выяснить, включен ли/отключен брандмауэр Windows в сети, сканировать сеть и сообщать мне, включена ли функция брандмауэра/отключена.Ошибка сценария Powershell
Вот скрипт я использую, имейте в виду, что я большой уровень входа время:
function Get-FWState
{
param
(
[int]$state
)
switch ($state)
{
0 { return "Off" }
1 { return "On" }
}
}
if (-not (Get-Module ActiveDirectory))
{
Import-Module ActiveDirectory
}
$computers = Get-ADComputer -Filter *
ForEach ($computer in $computers)
{
try
{
$everythingOK = $True
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer.Name)
$domkey = $reg.OpenSubkey("SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\DomainProfile")
$domvalue = $domkey.GetValue("EnableFirewall")
}
catch
{
$everythingOK = $false
$_
}
if ($everythingOK)
{
$stdkey = $reg.OpenSubkey("SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile")
$stdvalue = $stdkey.GetValue("EnableFirewall")
$pubkey = $reg.OpenSubkey("SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\PublicProfile")
$pubvalue = $pubkey.GetValue("EnableFirewall")
}
$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty -Name 'HostName' -Value $computer.Name
$obj | Add-Member -MemberType NoteProperty -Name 'DomainProfile' -Value $(Get-FWState -state $domvalue)
$obj | Add-Member -MemberType NoteProperty -Name 'StandardProfile' -Value $(Get-FWState -state $stdvalue)
$obj | Add-Member -MemberType NoteProperty -Name 'PublicProfile' -Value $(Get-FWState -state $pubvalue)
Write-Output $obj
}
Когда я запускаю этот сценарий, я получаю следующее сообщение об ошибке.
You cannot call a method on a null-valued expression.
At C:\Scripts\Firewall.ps1:46 char:37
+ $pubvalue = $pubkey.GetValue <<<< ("EnableFirewall")
+ CategoryInfo : InvalidOperation: (GetValue:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
You cannot call a method on a null-valued expression.
At C:\Scripts\Firewall.ps1:46 char:37
+ $pubvalue = $pubkey.GetValue <<<< ("EnableFirewall")
+ CategoryInfo : InvalidOperation: (GetValue:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
У вас есть достаточно прав на доступ к реестру на этих машинах? – Deruijter