首页 > 解决方案 > 如何将结果保存到不同的变量

问题描述

这是我的代码和结果:

PS C:\Windows\system32> $AllowedDisplayName = "CSLite_FireWall_Rule_Name"
$ruleallowedname = ( Get-NetFirewallRule -DisplayName "$AllowedDisplayName" )
$ruleallowedEnabled = $ruleallowedname.Enabled
$Profileallowedname = $ruleallowedname.Profiles

$b[0] = $Profileallowedname

echo $ruleallowedEnabled
Echo $Profileallowedname 
Echo $b[0]
Cannot index into a null array.
At line:6 char:1
+ $b[0] = $Profileallowedname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

False
True
1
6
Cannot index into a null array.
At line:10 char:1
+ Echo $b[0]
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray


PS C:\Windows\system32> $AllowedDisplayName = "CSLite_FireWall_Rule_Name"
$ruleallowedname = ( Get-NetFirewallRule -DisplayName "$AllowedDisplayName" )
$ruleallowedEnabled = $ruleallowedname.Enabled
$Profileallowedname = $ruleallowedname.Profiles

echo $ruleallowedEnabled
Echo $Profileallowedname 
False
True
1
6

PS C:\Windows\system32> 

如果您看到,我只想将 1 和 6 分配给两个不同的变量,因为我想检查不同的结果

这是检查防火墙规则

有两种情况:这台电脑中有两条规则,一条用于域但禁用,另一种是私有,公共,规则是启用

另一种情况:这台电脑中有两条规则,一条用于域,启用另一条是私有的,公共的,规则是禁用的

只想使 Rule 具有 Private , Public 和 Enable Not Domain Disable 以失败此检查

如果 Private , Public 被禁用但有 Domain , Enable 将失败 Result

*PS 1 : 因为这两条规则将同时设置 * *PS 2 : 我的英语很差, 但我想知道如何做这个检查 *

标签: powershellfirewall

解决方案


用这个:

$AllowedDisplayName = "CSLite_FireWall_Rule_Name"
$ruleallowedname = ( Get-NetFirewallRule -DisplayName "$AllowedDisplayName" )
$ruleallowedEnabled = $ruleallowedname.Enabled
$Profileallowedname = $ruleallowedname.Profiles
$b = @("$($ProfileAllowedName)")
Write-Host $RuleAllowedName
Write-Host $ProfileAllowedName
Write-Host $b[0]

这里@() 创建了一个数组。要了解更多信息,请打开 powershell 并运行about_arrays


推荐阅读