Извлечение значения реестра с нескольких компьютеров с помощью powershell - PullRequest
3 голосов
/ 26 января 2012

Мы с коллегой пытаемся создать сценарий powershell, который использует CSV-файл, содержащий имена всех наших компьютеров в сети компании, и использует эти имена для подключения к удаленному реестру и извлечения определенного значения.

Это то, что мы имеем до сих пор:

$strMachineName = import-csv .\computer_name.csv
foreach ($line in $strMachineName)
{
                $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $line.computer)
                $regkey = $reg.OpenSubkey("SOFTWARE\\Olympus\\DSSPlayerPro\\Transcription Module\\UserInformation")
                $serialkey = $regkey.GetValue("SerialNumber")
                write-host $line","$serialkey
}

Теперь этот скрипт работает нормально, но есть проблемы с выводом, которые затрудняют понимание на многих компьютерах.

Мы хотели бы иметь возможность выводить stdout в другой файл, csv или txt, и мы также хотели бы иметь возможность выводить stderr в ноль или отдельный файл, чтобы мы могли проверить его позже.

Мои исследования заставили меня поверить, что write-host не подходит для использования команды, так как она не может выводить в файл при использовании переменных (??), поэтому я попытался использовать echo, но у меня возникают проблемы с получением Переменные для работы, как я хотел бы.

Я ценю любую помощь, спасибо!

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Вам нужно будет ловить исключения с помощью try / catch.

$strMachineName = import-csv .\computer_name.csv
foreach ($line in $strMachineName)
{
    try {
        $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $line.computer)
        $regkey = $reg.OpenSubkey("SOFTWARE\\Olympus\\DSSPlayerPro\\Transcription Module\\UserInformation")
        $serialkey = $regkey.GetValue("SerialNumber")

        ('"{0}","{1}"' -f $line.computer, $serialkey) | out-file C:\stdout.csv -append -encoding ascii
    } catch {
        ('"{0}","{1}"' -f $line.computer, $_) | out-file C:\stderr.csv -append -encoding ascii
    }
}

Это создает два файла (stdout.csv и stderr.csv). Успешные запросы хранятся в stdout.csv, а неудавшиеся запросы - в stderr.csv.

0 голосов
/ 17 октября 2018

Слабый сценарий ".computer" из "$ line.computer" не запускается в последней оболочке power с включенным там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...