您学习编程的一件事总是处理错误。 在这种情况下,我的程序没有错误;什么都没有打印。 我只想在2列中找到我的组名和被管理信息。你能解释为什么没有输出吗?
Import-Module ActiveDirectory
$exportlist = "C:\Temp\managedby.txt"
Clear-Content $exportlist
$Header = `
"Group ID Name" + "|" + "ManagedBy"
$Header | Out-File $exportlist -Append
$list = get-adgroup -properties name, managedby -filter {name -notlike "WA*" -or name -notlike "workstation*"} `
| Select name, managedby
$listing =`
$list.name + "|" + $list.managedby
$listing | Out-File $exportlist -Append
这是我在PowerShell中运行时出现的结果:
PS F:\> $Header = `
>> "Group ID Name" + "|" + "ManagedBy"
>>
PS F:\> write-host $Header
Group ID Name|ManagedBy
PS F:\> $list = get-adgroup -properties name, managedby -filter {name -notlike "WA*" -or name -notlike "workstation*"} `
>> | Select name, managedby
PS F:\> $listing =`
>> $list.name + "|" + $list.managedby
PS F:\> write-host $listing
|
看起来$listing
什么都不包含?
答案 0 :(得分:2)
在考虑了更多关于它之后:最可能的情况可能是您正在使用PowerShell v2而Get-ADGroup
会产生多个结果。在PowerShell中,v2 $list.Name
不会扩展到所有数组元素的Name
属性列表,而是扩展到数组对象的(不存在)属性Name
,从而导致{{1} },然后在字符串连接期间转换为空字符串。
PowerShell v2中的属性扩展:
$null
PowerShell v3中的属性扩展:
PS C:\Temp> $PSVersionTable.PSVersion.ToString()
2.0
PS C:\Temp> $f = Get-ChildItem
PS C:\Temp> $f
Directory: C:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 03.12.2014 20:38 0 a.txt
-a--- 03.12.2014 20:38 0 b.txt
PS C:\Temp> $f.Name
PS C:\Temp> $f | select -Expand Name
a.txt
b.txt
话虽如此,您的目标似乎是将AD组的名称和管理员导出到一个由PS C:\Temp> $PSVersionTable.PSVersion.ToString()
3.0
PS C:\Temp> $f = Get-ChildItem
PS C:\Temp> $f
Directory: C:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 03.12.2014 20:38 0 a.txt
-a--- 03.12.2014 20:38 0 b.txt
PS C:\Temp> $f.name
a.txt
b.txt
PS C:\Temp> $f | select -expand Name
a.txt
b.txt
个字符分隔的文件中。但是,你正在努力尝试方式。您可以使用Export-Csv
cmdlet轻松完成此操作,该cmdlet允许您指定所需的分隔符。
|
如果您想要经理的名称而不是专有名称,请使用calculated property解析它:
Import-Module ActiveDirectory
$exportlist = 'C:\Temp\managedby.txt'
$attr = 'Name', 'ManagedBy'
$fltr = { Name -notlike "WA*" -or Name -notlike "workstation*" }
Get-ADGroup -Properties $attr -Filter $fltr | Select $attr |
Export-Csv $exportlist -NoType -Delimiter '|'