Windowsファイアウォールがネットワーク上で有効/無効になっているかどうかを調べて、ネットワークをスキャンし、ファイアウォールサービスが有効/無効になっているかどうかを知らせようとしています.
これが私が使用しているスクリプトです。私は初心者レベルであることに注意してください。
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