You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何转换PropertyValueCollection为字符串以导出RDS用户设置至CSV?

解决AD用户RDS属性导出CSV的类型转换问题

需求:获取特定OU中多个用户的Remote Desktop Services(RDS)设置并导出为CSV文件。遇到的问题是RDS相关属性属于PropertyValueCollection类型,无法直接用Export-Csv导出,尝试转换为字符串时触发如下错误:

+  ~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromAnyTypeToString 

错误原因

  1. 当用户未配置RDS属性时,$UserInfo.TerminalServicesProfilePath这类属性本身为null,访问其.Value属性会引发异常
  2. 即使属性存在,直接对.Value使用ForEach-Object { [string]$_ }的转换方式冗余且容易在空值场景下出错

解决方案

方案1:安全访问ADSI属性并转换字符串

直接对ADSI属性进行字符串转换,无需访问.Value——ADSI对象的属性本身支持直接强制转换为字符串,空属性会返回空字符串,避免空值报错:

$rows = @() 
$Accounts = Get-ADUser -Filter * -SearchBase $OU -Properties *
$Accounts | ForEach-Object {
    $user = $_
    $UserInfo = [ADSI]"LDAP://$($user.distinguishedName)"

    # 直接转换为字符串,空属性自动返回空值
    $TSProfilePath = [string]$UserInfo.TerminalServicesProfilePath
    $TSHomeDir = [string]$UserInfo.TerminalServicesHomeDirectory
    $TSHomeDrive = [string]$UserInfo.TerminalServicesHomeDrive

    $rows += [PSCustomObject]@{
        User = $user.Name
        TSProfilePath = $TSProfilePath
        TSHomeDir = $TSHomeDir
        TSHomeDrive = $TSHomeDrive
    }
}

$rows | Export-Csv -Path "C:\doc.csv" -NoTypeInformation -Encoding UTF8

方案2:直接用Get-ADUser获取RDS属性(更高效)

无需借助ADSI,直接通过Get-ADUser的Properties参数指定需要的RDS属性,然后直接提取值:

# 指定需要的RDS属性,避免获取所有属性提升效率
$rdsProperties = 'TerminalServicesProfilePath', 'TerminalServicesHomeDirectory', 'TerminalServicesHomeDrive'
Get-ADUser -Filter * -SearchBase $OU -Properties Name, $rdsProperties | 
    Select-Object @{Name='User'; Expression={$_.Name}},
                  @{Name='TSProfilePath'; Expression={[string]$_.TerminalServicesProfilePath}},
                  @{Name='TSHomeDir'; Expression={[string]$_.TerminalServicesHomeDirectory}},
                  @{Name='TSHomeDrive'; Expression={[string]$_.TerminalServicesHomeDrive}} |
    Export-Csv -Path "C:\doc.csv" -NoTypeInformation -Encoding UTF8

说明

  • 方案2无需额外创建ADSI连接,执行效率更高,且避免类型转换问题
  • 添加-Encoding UTF8参数可避免CSV文件中文乱码问题

内容的提问来源于stack exchange,提问作者closedcasketfuneral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:44:59