Запись вывода в файл .txt на Powershell - PullRequest
0 голосов
/ 19 июня 2019

Я нашел небольшой скрипт для получения всех локальных групп и участников, и он отлично работает, но мне нужно записать вывод в 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 в конце кода после }, но тоже не работает, и это единственное решение, которое я нахожу в Интернете.

1 Ответ

0 голосов
/ 19 июня 2019

Если вы хотите включить регистрацию в функцию, вам нужно поместить ее в тело функции, например,

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...