Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Powershell中的extensionName导出为CSV,而无需其他字符?_Powershell - Fatal编程技术网

如何将Powershell中的extensionName导出为CSV,而无需其他字符?

如何将Powershell中的extensionName导出为CSV,而无需其他字符?,powershell,Powershell,我试图提供一个在森林管理帐户的信息报告。所有管理员帐户都以admin开头。管理员帐户的所有者已添加为active directory中的“extensionName”属性,我希望将其包含在报告中(理想情况下,然后在AD中查找所有者管理器,但这可以分两部分完成) 返回的值似乎是一个倍数,因此我需要为此选择第一个值,但当我使用select{E={$$\extensionName[0]}时,CSV文件中的条目显示为{$\extensionName[0]=domain\username}我想排除{$\e

我试图提供一个在森林管理帐户的信息报告。所有管理员帐户都以admin开头。管理员帐户的所有者已添加为active directory中的“extensionName”属性,我希望将其包含在报告中(理想情况下,然后在AD中查找所有者管理器,但这可以分两部分完成)

返回的值似乎是一个倍数,因此我需要为此选择第一个值,但当我使用
select{E={$$\extensionName[0]}
时,CSV文件中的条目显示为
{$\extensionName[0]=domain\username}
我想排除
{$\extensionName[0]=
部分

任何帮助都将不胜感激,因为我正在兜圈子

$AdminReport = "C:\Temp\AdminReport.CSV"
Remove-Item $AdminReport -ErrorAction SilentlyContinue
$STR = "Name,SAM,Enabled,Owner,Group Memberships"
Add-Content $AdminReport $STR
$AllUsersNow = Get-ADUser –Filter "SamAccountName -Like 'admin*'"
Foreach ($ThisUser in $AllUsersNow)
{

$NameOfUser = $ThisUser.UserPrincipalName
$SamOfUser = $ThisUser.SamAccountName
$DisabledOfUser = $ThisUser.Enabled
$ExtOfUser = Get-ADuser $ThisUser -Properties extensionName | Select @{E=        {$_.extensionName[0]}}
$GroupsOfUser = (Get-ADPrincipalGroupMembership -Identity $ThisUser).Name -join "; "

IF ($NameOfUser -like "*")
{

$STRNew = $NameOfUser+","+$SamOfUser+","+$DisabledOfUser+","+$ExtOfUser+","+$GroupsOfUser
Add-Content $AdminReport $STRNew
}
}

实际的输出结果显示
@{$\uU9.extensionName[0]=domain\username}
,我只想
domain\username

我不熟悉extensionName属性。您可以只修改这一行代码:

$ExtOfUser = Get-ADuser $ThisUser -Properties extensionName | Select @{E=        {$_.extensionName[0]}}
具体如下:

$ExtOfUser = (Get-ADuser $ThisUser -Properties extensionName).extensionName
或者,如果extensionName是数组,则可能出现以下情况:

$ExtOfUser = (Get-ADuser $ThisUser -Properties extensionName).extensionName[0]

从字符串手动构建csv文件没有多大意义,因为所有数据都存在于对象中。 构建一个集合[PSCustomObject]并将其导出

## Q:\Test\2019\02\12\SO_54652780.ps1
$AdminReportFile = "C:\Temp\AdminReport.CSV"

$AdminReport = Foreach($User in (Get-ADUser –Filter "SamAccountName -Like 'xb*'")){
    [PSCustomObject]@{
        Name                = $User.UserPrincipalName
        SAM                 = $User.SamAccountName
        Enabled             = $User.Enabled
        Owner               = $User.ExtensionName|Select-Object -First 1
        'Group Memberships' = (Get-ADPrincipalGroupMembership -Identity $User).Name -join "; "
    }
}
$AdminReport
$AdminReport | Export-Csv $AdminReportFile -NoTypeInformation

这是一种更好的方法-谢谢。虽然“$User.ExtensionName | Select Object-First 1”返回一个空值,所以我使用了另一个答案中的“…-Properties ExtensionName).ExtensionName[0]”来使用您的代码,这非常有效。