gpt4 book ai didi

powershell - 将缺少属性值的ROW添加到Export-CSV

转载 作者:行者123 更新时间:2023-12-02 23:17:09 25 4
gpt4 key购买 nike

我使用以下POWER SHELL脚本从“Manager”用户属性中提取(到csv)管理器名称。

#This script, , Exports the Manager name of the employee`s in the TXT file.
# users.txt file - contains a simply list of user names ( samaccount-names )

Get-Content D:\powershell\permmisions\Users.txt | Foreach-Object {

Get-ADUser -Identity $_ -Properties Manager | Select-Object name, Manager | Export-Csv D:\Powershell\ADuserinformation\Export-Managers-of-specific-users.csv
-Append

}
我面临的挑战是何时在导出的CSV文件上,
如果没有为用户设置管理员,则列表“SKIPS”为空白值字段。
并且未创建ROWS,缺少MANAGER。
我想做的是输入字符(〜)的脚本,例如,值是空白。
这样,将为CSV文件上的空白MANAGER值创建一行
请帮忙 ,
提前谢谢大家。

最佳答案

注意:至少所有检索到的AD用户都应存在Name属性,因此即使Manager为空但Manager列为空的用户也将获得一行。如果确实需要处理实际上不是所有以Users.txt命名的用户,请参阅Theo's helpful answer
最简单的方法是使用calculated property:

Get-ADUser -Identity $_ -Properties Manager | 
Select-Object Name, @{ Name='Manager';
Expression={ if ($_.Manager) { $_.Manager } else { '~' } } }
注意:
  • 通常缩写哈希表的键名,该哈希表将计算出的属性定义为ne
  • if语句利用了以下事实:在 bool(boolean) 上下文中,空字符串(或$null)求值为$false;有关PowerShell隐式到 bool(boolean) 转换的概述,请参见this answer的底部。

  • 在PowerShell [Core] 7.0或更高版本中,您还可以利用 ternary operator( <condition> ? <valueIfTrue> : <valueIfFalse>)进一步缩短命令:
    # PSv7+
    Get-ADUser -Identity $_ -Properties Manager |
    Select-Object Name, @{ n='Manager'; e={ $_.Manager ? $_.Manager : '~' } }
    注意:如果未分配管理器,则如果 $_.Manager返回 $null而不是空字符串( ''),则可以使用 ??,而不是PSv7 + null-coalescing operator: $_.Manager ?? '~'

    关于powershell - 将缺少属性值的ROW添加到Export-CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62675929/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com