PowerShell脚本导出CSV文件名缺失$ouType参数求助
问题分析与解决
问题原因
输出文件名中缺失$ouType内容,是因为PowerShell字符串插值时,变量$ouType后面直接跟下划线_,导致PowerShell将$ouType_识别为一个完整变量名(该变量未定义),从而输出空值。
修复方案
在字符串中明确变量边界,将$ouType改为${ouType},确保PowerShell正确解析变量:
修改后的$outputFile定义代码:
$outputFile = Join-Path -Path $location -ChildPath "src\Results\User_Profiles_${ouType}_$($scriptStartTime.ToString('dd-MM-yyyy HHmmss')).csv"
完整修复后的函数代码
function Process-UsersInOU { param ( [string[]]$ouDistinguishedName, [string]$ouType ) $outputFile = Join-Path -Path $location -ChildPath "src\Results\User_Profiles_${ouType}_$($scriptStartTime.ToString('dd-MM-yyyy HHmmss')).csv" $results = @() foreach($ou in $ouDistinguishedName){ Write-Output "Processing $($ou) ..." $Users = Get-ADUser -Filter 'enabled -eq $true' -SearchBase $ou write-output "This OU has $($Users.count) users..." foreach ($user in $Users) { $Groups = Get-ADPrincipalGroupMembership $user | Where-Object { $_.Name -like "*profiles*" } if ($Groups.Count -eq 0) { $result = [PSCustomObject]@{ 'UserID' = $user.SamAccountName 'ProfilesGroup' = "Not a member of any group" } } else { $result = [PSCustomObject]@{ 'UserID' = $user.SamAccountName 'ProfilesGroup' = ($Groups | ForEach-Object { $_.Name }) -join ', ' } } $results += $result } } # Export results to CSV $results | Export-Csv -Path $outputFile -NoTypeInformation }
内容的提问来源于stack exchange,提问作者Nuisance
相关产品推荐
相关产品推荐

