我得到了一个用户列表,存储在一个变量中,然后将用于创建CSV。最初,变量的元素使用-join (",")
以逗号分隔。我希望将","
替换为换行符,因此我使用了-join ("'n")
,换行符做得很好,但变量的元素不在同一个单元格中。
这是CSV提供给我的内容:
以下是所需的结果:
我试过了,但似乎不起作用:
-join [Environment]::NewLine
ReplaceCommaWithNewLine($Compare -join ",")
$data = Get-Content -Path $Chemin_File_CSV
$data = $data -replace ",","`n"
$data | Set-Content -Path $Chemin_File_CSV
$data = Import-Csv -Path $Chemin_CSV_File
你知道怎么解决我的问题吗?
您可以在下面找到相应的脚本:
# Retrieving the list of privileged groups to check
$GroupsToCheck = @("Administrateurs","Administrateurs du schéma","Administrateurs de l’entreprise","Admins du domaine", "Opérateurs de compte","Opérateurs de serveur" ,"Opérateurs de sauvegarde","Opérateurs d’impression")
# Retrieve the list of members of the AD group "Protected Users
$ADGroup_ProtectedUsers_Members = (Get-ADGroupMember "Protected Users").SamAccountName
# Comparison of the groups contained in the $GroupsToCheck table and in the AD group "Protected Users
$Compare = ((Compare-Object -ReferenceObject $GroupsToCheck -DifferenceObject $ADGroup_ProtectedUsers_Members) | Where-Object -Property SideIndicator -EQ "<=").InputObject
# If $Compare is empty, Conform
if (!$Compare) {
$Status = "Conform"
$Value = $null
# Else, Not Conform
} else {
$Status = "Non Conform"
$Value= ($Compare -join "`n")
}
$Path__CSV = "C:\Users\Public\Documents\test.csv"
$Content_CSV = (@"
"Status" ; "Value"
$Status ; $Value
"@) | Out-File -FilePath $Path_CSV -Encoding UTF8 -Append
先谢谢你。
1条答案
按热度按时间zf2sa74q1#
不要使用纯文本处理;创建 * 对象 *(
[pscustomobject]
),您可以将其传递给Export-Csv
。Export-Csv
会自动将多行字符串封装在"..."
中,"..."
会将其嵌入的换行符保留为字段(列)值的一部分(实际上,* 所有 * 字段都封装在"..."
中)[1],如以下示例及其内存中的等效项ConvertTo-Csv
所示:输出:
注:
,
(如;
),则将-UseCulture
添加到Export-Csv
/ConvertTo-Csv
调用中,假设所需的分隔符与 * 当前区域性 * 关联。-Delimiter
参数。[1]这在 * Windows PowerShell * 中 * 总是 * 正确,在PowerShell (Core) 7+中 * 默认情况下 * 正确,现在您可以通过
-UseQuotes
和-QuoteFields
参数控制引用行为。