Сценарий PowerShell, имеющий проблемы с перемещением подразделений в разных VLAN - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующий скрипт PowerShell, который я использую для опроса компьютеров, чтобы я мог определить порядок развертывания обновлений и т. Д. Я просто создаю 'TestPCs.txt' с экспортом дерева Active Directory, и это будет делатьping-тест и запуск для всего, что возвращается.

Он отлично работает на машинах, которые сопоставляют пароли локальных администраторов с моими собственными, и находятся в той же VLAN, но у меня возникают проблемы с машинами на альтернативных VLAN (общедоступные машины).

Одна вещь, которую я сделал с некоторой степенью успеха, - это подключить машину, сидящую на моем столе, к другой VLAN через аппаратный кабель к порту Ethernet, настроенному для соответствия этим другим машинам, измените мой пароль локального администратора для соответствияи запустите сценарий PowerShell оттуда.

Это кажется успешным на машинах, для которых им не назначено подразделение (в контейнере «Компьютеры» по умолчанию).Я хотел бы знать, что я могу сделать, чтобы этот сценарий выполнялся независимо от назначения OU.

Редактировать: у каждой компьютерной лаборатории есть собственный OU, но компьютеры, не назначенные OU, возвращаютинформация.

$testcomputers = Get-Content -Path 'C:\PSFiles\TestPCs.txt'

foreach ($computer in $testcomputers) {
    if (Test-Connection -ComputerName $computer -Quiet -Count 1) {
        Add-Content -Value $computer -Path C:\PSFiles\livePCs.txt
    } else {
        Add-Content -Value $computer -Path C:\PSFiles\deadPCs.txt
    }
}

$exportLocation = 'C:\PSFiles\WMI_Inventory.csv'
$computers = Get-Content -Path 'C:\PSFiles\livePCs.txt'

foreach ($computer in $computers) {
    $OS = Get-WmiObject Win32_OperatingSystem -ComputerName $computer
    $cpu = Get-WmiObject Win32_Processor -ComputerName $computer

    $Bios = Get-WmiObject Win32_Bios -ComputerName $computer
    $systemBios = $Bios.SerialNumber

    $Hardware = Get-WmiObject Win32_ComputerSystem -ComputerName $computer
    $totalMemory = [Math]::Round($Hardware.TotalPhysicalMemory/1GB, 2)

    $OutputObj  = New-Object -Type PSObject
    $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $computer.ToUpper()
    $OutputObj | Add-Member -MemberType NoteProperty -Name Serial_Number -Value $systemBios
    $OutputObj | Add-Member -MemberType NoteProperty -Name Make -Value $Hardware.Manufacturer
    $OutputObj | Add-Member -MemberType NoteProperty -Name Model -Value $Hardware.Model
    $OutputObj | Add-Member -MemberType NoteProperty -Name Processor -Value $cpu.Name
    $OutputObj | Add-Member -MemberType NoteProperty -Name RAM_GB -Value $totalMemory
    $OutputObj | Add-Member -MemberType NoteProperty -Name OS -Value $OS.Caption
    $OutputObj | Add-Member -MemberType NoteProperty -Name OS_Version -Value $OS.Version
    $OutputObj | Export-Csv -Path $exportLocation -Append -NoTypeInformation
}
...