在Powershell上的.txt文件上写入输出

时间:2019-06-19 09:03:13

标签: powershell

我找到了一个小脚本来获取所有本地组和成员,并且运行良好,但是我需要在PowerShell上编写输出。

Trap {"Error: $_"; Break;}

function EnumLocalGroup($LocalGroup) {
    $Group = [ADSI]"WinNT://$strComputer/$LocalGroup,group"
    "`r`n" + "Group: $LocalGroup"
    $Members = @($Group.psbase.Invoke("Members"))

    foreach ($Member In $Members) {
        $Name = $Member.GetType().InvokeMember("Name", 'GetProperty', $Null, $Member, $Null)
        $Name
    }
}

$strComputer = gc env:computername
"Computer: $strComputer"
$computer = [adsi]"WinNT://$strComputer"
$objCount = ($computer.PSBase.Children | Measure-Object).Count
$i = 0
foreach ($adsiObj in $computer.PSBase.Children) {
    switch -regex ($adsiObj.PSBase.SchemaClassName) {
        "group" {
            $group = $adsiObj.Name
            EnumLocalGroup $group
        }
    }
    $i++
}

我已经尝试过了:

function EnumLocalGroup($LocalGroup) | Out-File -FilePath "E:\PS\Malik\group.txt"

但是,如果我这样做,代码将无法启动。我还尝试在Out-File之后的代码末尾使用整个}行,但是也没有用,这是我在Internet上找到的唯一解决方案。

1 个答案:

答案 0 :(得分:0)

如果要将日志记录合并到函数中,则需要将其放入函数主体中,例如

function EnumLocalGroup($LocalGroup) {
    ....
    $foo = 'something'
    $foo                           # output returned by function
    $foo | Add-Content 'log.txt'   # output to log file
    ...
}

function EnumLocalGroup($LocalGroup) {
    ...
    $foo = 'something'
    $foo | Tee-Object 'log.txt' -Append   # output goes to log file and StdOut
    ...
}

否则,在调用该函数时必须记录日志:

EnumLocalGroup $group | Add-Content 'C:\log.txt'