2015-12-04 6 views
-6

Я новичок в Powershell и мне было поручено написать сценарий, который будет получать контент из каждого файла hosts на каждом ПК и сервере в моем домене но иметь возможность запускать его независимо от каждого подразделения в AD. Затем мне нужно вывести файл single.csv с именем, IP и контентом для каждого хоста.Скрипт Powershell для проверки файлов хостов на всех хостах в домене, но выполнение OU по OU

Может ли кто-нибудь посоветовать?

Я придумал 2 строки с именем GetHostInfo, чтобы получить контент и написать отдельному .csv, но это не близко к тому, что необходимо. Я знаю, что могу заставить скрипт для запуска на каждом отдельном подразделении, но не зная, как положить его и сообщить каждому обратно в единый документ

Set-ExecutionPolicy unrestricted $env:computername Copy-Item C:\Windows\System32\drivers\etc\hosts C:\hosts\$env:computername.csv 

Я правильно с этим сценарием, который должен запустить выше сценарий я отправил называется GetHostInfo на DC называется CH0DC01, на домене gelbergroup.com на OU GG Workstation

Import-module activedirectory 

$C=get-adcomputer -filter * -searchbase "ou=GG Workstation, dc=CH0DC01, dc=gelbergroup.com"| ForEach-Object {$_.Name} 

Invoke-command -computername $C -scriptblock {GetHostInfo} 

Если это так, где я нужен GetHostInfo сценарий, который будет сохранен. Я смущен, поскольку я не дал ему путь в скрипте, который будет запускать его в OU.

+7

Добро пожаловать на ТАК. Пожалуйста, покажите нам, что вы пробовали. SO не _not_ в службе написания кода. –

+0

Я придумал 2 строки, чтобы получить контент и написать отдельному .csv, но это не похоже на то, что нужно. Я знаю, что могу заставить скрипт работать в каждом отдельном подразделении, но не знаю, как его выложить и сообщить о каждом документе в единый документ. Set-ExecutionPolicy неограничен $ env: имя_компьютера Копировать-элемент C: \ Windows \ System32 \ drivers \ etc \ hosts C: \ hosts \ $ env: computername.csv –

+0

Пожалуйста, отредактируйте свой код в своем вопросе, а не разместите его как комментарии. –

ответ

0

Пример 1:

# declare the Get-HostInfo function as follows 
function Get-HostInfo { 
    Set-ExecutionPolicy Unrestricted 
    "$env:computername" 
    Copy-Item "C:\Windows\System32\drivers\etc\hosts" "C:\hosts\$env:computername.csv" 
} 

# and then use it 
Import-module ActiveDirectory 

$searchBase = "ou=GG Workstation, dc=CH0DC01, dc=gelbergroup.com" 

$computers = Get-ADComputer -Filter * -SearchBase $searchBase | 
    ForEach-Object { $_.Name } 

Invoke-Command -ComputerName $computers -ScriptBlock { Get-HostInfo } 

Пример 2:

# if you declare the Get-HostInfo function in another file, 
# for example C:\scripts\functions.ps1, you can include it as follows 
# this is called "dot-sourcing" 

. "C:\scripts\functions.ps1" 

Import-module ActiveDirectory 

$searchBase = "ou=GG Workstation, dc=CH0DC01, dc=gelbergroup.com" 

$computers = Get-ADComputer -Filter * -SearchBase $searchBase | 
    ForEach-Object { $_.Name } 

Invoke-Command -ComputerName $computers -ScriptBlock { Get-HostInfo } 

Более подробную информацию о дот-источников: http://ss64.com/ps/source.html

+0

Большое вам спасибо за ваш ответ. –

+0

Добро пожаловать. Вы можете принять ответ, нажав на зеленый чек под своим голосованием, если хотите. – sodawillow