Powershell返回函数操作

时间:2018-04-11 13:39:04

标签: powershell powershell-v2.0

我正在尝试从Windows注册表编辑器中读取,如果读取的值是正确的,或者根据强化要求,我将Good放到Bad

我想添加一个统计信息,我想要计算所有Bad值,并将其放在一个表中,说这些都是具有错误值的注册表。

但我不太确定如何操作函数return,因此我可以收集这些注册表值并编译成报告。

$array = @(
    "PreventStorage",
    "RemoteAssistance",
)

function PreventStorage {
    $getvalue = get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "NoLmHash"

    if ($getvalue.NoLmHash -eq 1) {
        Write-Output "Good"
    }
    else { Write-Output "BAD"}
}

function RemoteAssistance {     
    $getvalue = get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance" -Name "fAllowToGetHelp"

    if ($getvalue.fAllowToGetHelp -eq 0) {
        Write-Output "Good"
    }   
    else { Write-Output "BAD"}
}

$location = Get-Location

If (Test-Path $path ) {
    $array | ForEach { ( Invoke-Expression $_)} | Out-File $location\copy_into_a_report.txt
}

问题:如何添加单个衬垫或双衬垫以检查返回功能是好还是坏。如果是坏的,则写出包含错误值的注册表?

我试图在函数内部添加一个变量,并从外部读取变量,如此

function PreventStorage {
    $getvalue = get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "NoLmHash"

    if ($getvalue.NoLmHash -eq 1) {
        $new_variable = 'Good'
        Write-Output "$new_variable"
    }
    else { 
        $new_variable = 'Bad'
        Write-Output "$new_variable"
    }
}

我试过以下

$new = $array | ForEach { ( Invoke-Expression $_)} 
foreach ($new ) | where {$new_variable -eq 'Bad' } | Out-File $location\copy_into_a_BADreport.txt

1 个答案:

答案 0 :(得分:0)

这个问题可以关闭,解决了我自己的问题。创建了一个存储键值对的哈希表。