我是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上运行它。
答案 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