列出AD PC的AD组时出错

时间:2014-09-10 17:31:29

标签: powershell properties

我正在编写一个工作脚本,并试图确定我的代码显示错误的原因。我是这个编码的新手,想要了解什么是错的。

我得到的错误来自我的.txt文件中的标签.... PC列表。

例如:获取内容:无法找到路径' F:\ tag 77909'因为它不存在    我的困惑是,当我在.Replace代码之后写主机时,它正确打印

Ex:您无法在空值表达式上调用方法。 + $ Notags = $ PC.Replace<<<< ("标记"," PC")     + CategoryInfo:InvalidOperation :( Replace:String)[],RuntimeEx    ception     + FullyQualifiedErrorId:InvokeMethodOnNull

我得到的最后一个错误是它只打印出最后一台PC ....我的.txt文件列表中的ID ???我不确定为什么我有一个foreach循环

**MY CODE SO FAR:**

Import-Module activedirectory

$compImports = Get-Content "C:\Temp\temp\input.txt"
$groupExport = "C:\temp\temp\output.txt"
Clear-Content $groupExport

$Header = "PC Name" + "|" + "Group Name" + "|" + "Group Description"

#Write header 
$Header | Out-File $groupExport -Append

#get PC tag listing
$PCs = Get-Content $compImports

#For loop to change all "tag " to "PC"
foreach($PC in $PCS)
{
$Notags =$PC.Replace("tag ", "PC")
}

#loop to get information and print it out
foreach ($Notag in $Notags) {
   $computerobj = Get-ADComputer $Notag -Properties memberof 
   $computerobj.memberof | ? {$_ -match '^CN=APP.*'} `
   | % {get-adgroup $_ -Properties name, description} | `
   % {$computerobj.Name + "|" + $_.name + "|" + $_.description `
   | Out-File $groupExport -Append}
}

1 个答案:

答案 0 :(得分:1)

我在这里至少看到一个问题

$compImports = Get-Content "C:\Temp\temp\input.txt"
...
$PCs = Get-Content $compImports

您正在调用Get-Content两次,这会产生您最有可能发生的错误。 可以简化为

$PCs = Get-Content "C:\Temp\temp\input.txt"

因此,您的其他错误应该消失,因为$ PC应包含该点的实际数据。