Powershell脚本,用于审核域中所有主机上的主机文件,但通过OU执行OU

时间:2015-12-04 13:36:29

标签: powershell scripting

我是Powershell的新手,我的任务是编写一个脚本,该脚本将从我域中每台PC和服务器上的每个主机文件中获取内容,但能够在AD中的每个OU上独立运行它。然后,我需要输出一个single.csv文件,其中包含每个主机的计算机名,IP和内容。

有人可以提供建议吗?

我想出了两行名为GetHostInfo的内容来获取内容并写入个人.csv,但这并不接近所需。我知道我可以强制脚本在每个OU上运行,但不知道如何将其布局并将每个OU报告回单个文档

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

我是否正确使用此脚本,该脚本应在GetHostInfo

上的CH0DC01域上的gelbergroup.com DC上运行上面发布的名为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上运行它。

1 个答案:

答案 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