【问题标题】:Powershell AD script unable to export to csvPowershell AD 脚本无法导出到 csv
【发布时间】:2020-01-16 19:46:16
【问题描述】:

我编写了一个代码,但无法将其导出到 csv。 因此,该代码将 AD 用户列表与通讯组或通讯组数量进行比较,并且运行良好。我只能将其导出为 .csv。

Get-ADUser -filter {Enabled -eq $true} -SearchBase "OU=Location" |% { $_.samAccountName } | out-file "C:\users.txt"
Get-ADGroupMember -Identity "Company" |% { $_.samAccountName } | out-file "C:\Members.txt"

$List = Get-Content ("C:\Members.txt")
$ListOfUsers = Get-Content ("C:\users.txt")

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual 
foreach($Inp in $compare)
{
$notice = $Inp.InputObject 
    If ($Inp.SideIndicator -eq "==")
    {

        "$notice User is avaiable in Distribution List"
    }
    elseIf ($Inp.SideIndicator -eq "<=")  
    {
        "$notice User is not available in Distribution List "
    } 
} 

如果我在 export-csv 行的末尾添加它会给我这样的东西:

我的问题是: 如果用户是否在分发组内,如何正确导出以接收 InputObject 作为名称、SideIndicator 作为通知和比较运算符作为信息?

【问题讨论】:

  • 你能用你想要的输出的例子来澄清你的问题吗?

标签: powershell active-directory


【解决方案1】:

如果我们保留您当前的逻辑,您可以使用Select-Object 中的计算属性来获得所需的结果。

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual
$hash = @{'==' = "{0} User is available in distribution list" -f $compare.inputobject
          '<=' = "{0} User is not available in distribution list" -f $compare.inputobject
}
$compare | Select-Object @{n='User';e={$_.InputObject}},@{n='Notice';e={$hash.($_.SideIndicator)}} |
    Export-Csv output.csv -NoType

说明:

计算属性是具有特定键值对的哈希表,允许您输出自定义属性名称以及相应的自定义值。它需要一个表示属性名称的键和一个表示您的值的键。该名称可以表示为l、n、name 或label。值表达式可以是e 或expression。

创建$hash 哈希表只是为了使计算的属性更具可读性。它只是有一个与您想要的 SideIndicator 值匹配的键,以便我们可以动态返回您需要的消息。

您可以将属性名称 User 和 Notice 更改为您想要的任何名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 2021-01-04
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多