Как получить статус активации Windows на всех ПК в определенной OU в Active Directory с помощью PowerShell?

Я пытаюсь сканировать компьютеры в определенном подразделении в своем AD, чтобы получить статус активации Windows.

я продолжаю получать Test-Connection : Testing connection to computer 'CN=PCNAME,OU=MY-OU' failed: No such host is known

хотя, когда я пытаюсь проверить команду на одном удаленном ПК, она отлично работает, получая вывод

Я пытаюсь получить все хосты, используя

$Hosts = Get-ADComputer -Filter \* -SearchBase "OU=MY-OU"

а затем запустил цикл for для проверки соединения каждого хоста и использования

foreach ($PC in $Hosts) {
    if (Test-Connection $PC -Count 1) {
    $License = Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName $PC |where { $_.PartialProductKey } | select Description, LicenseStatus

    $csv =          [PSCustomObject]@{
                    License      = $License 
                    Computername = $PC
                }
            

        }
    }
Write-Output $csv
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В настоящее время ваше значение $PC выглядит следующим образом $PC = "CN=server1,OU=OU1,OU=OU2,OU=OU3,DC=домен,DC=org" чтобы получить имя компьютера, разделите строку, как показано ниже, и используйте это значение для тестового соединения. $CN = $PC.Split(',')[0].Split('=')[1]

$domainName = "CN=server1,OU=OU1,OU=OU2,OU=OU3,DC=domain,DC=org"
$CN = $domainName.Split(',')[0].Split('=')[1]
$CN

Отредактировано: в $Hosts есть несколько свойств, поэтому вместо разделения различающегося имени используйте Select-object для получения имени хоста DNS. У меня нет среды для тестирования этого кода... поэтому попробуйте сами.

$Hosts = Get-ADComputer -Filter \* -SearchBase "OU=MY-OU" | Select-Object dnsHostName
$csv = foreach ($dnsHostName in $Hosts) {
    Write-Output $dnsHostName
    if (Test-Connection $dnsHostName -Count 1) {
        $License = Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName $dnsHostName | where { $_.PartialProductKey } | select Description, LicenseStatus

        [PSCustomObject]@{
            License      = $License 
            Computername = $dnsHostName
        }
    }
}
$csv | Export-csv -Path C:\temp\output.csv -NoTypeInformation

я добавил $PC = $Hosts.Split(',')[0].Split('=')[1] после получения -Adcomputer, но я все еще получаю ту же ошибку

Evogear 08.11.2022 10:53

Также, когда я пытаюсь немного изменить код, я получаю сообщение об ошибке Method invocation failed because [Microsoft.ActiveDirectory.Management.ADComputer] does not contain a method named 'Split'.

Evogear 08.11.2022 10:55

Использование Select-object для получения имени хоста! Спасибо!

Evogear 10.11.2022 09:27

Другие вопросы по теме