PowerShell If Else逻辑不正常
现在我的语法问题已经解决了(请不要看缺少的下划线,这是网站上的一个问题),我很难用经理(组或用户)的“显示名称”填充“ManagedBy”字段。出于这样或那样的原因,我的if/else逻辑并不可靠,因为它只返回blancsPowerShell If Else逻辑不正常,powershell,Powershell,现在我的语法问题已经解决了(请不要看缺少的下划线,这是网站上的一个问题),我很难用经理(组或用户)的“显示名称”填充“ManagedBy”字段。出于这样或那样的原因,我的if/else逻辑并不可靠,因为它只返回blancs $When = ((Get-Date).AddDays(-21)).Date Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter {whenCreated -ge $When}
$When = ((Get-Date).AddDays(-21)).Date
Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter {whenCreated -ge
$When} -Properties * | Select whenCreated, cn, displayName,
GroupScope, GroupCategory, description, info, @{
Label='managedBy';
Expression={
if(Get-ADObject $_.managedBy.ObjectClass -eq "User" ) { (Get-ADUser $_.Manager -Properties displayName).displayName}
Else{
(Get-ADGroup $_.managedBy -Properties cn).cn
}
}
} | Export-Csv
"New groups -21 days.csv" -NoTypeInformation -Delimiter ";" -Encoding
utf8; start "New groups -21 days.csv"
谢谢您的帮助。似乎与问题是同一个问题: 变量扩展在scriptblock筛选器中不起作用。尝试切换到可扩展的字符串筛选器
Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter "whenCreated -ge '$When'" -Properties *
试试这个,您的初始Get广告组工作正常(在win2012上),需要调整的是if/else
$When = ((Get-Date).AddDays(-21)).Date
Get-ADGroup -SearchBase "OU=Groups,OU=BEL,OU=EU,DC=domain,DC=net" -Filter {whenCreated -ge
$When} -Properties * | Select whenCreated, cn, displayName,
GroupScope, GroupCategory, description, info,
@{
Label='managedBy';
Expression={
$m = Get-ADObject -Identity $_.managedBy -Properties displayName,cn
if($m.ObjectClass -eq "user") {
$m.displayName}
Else{
$m.cn
}
}
}
缺少下划线不是这样的问题。问题是你粘贴代码的方式很糟糕……对不起,我在上面用了引号。你能告诉我更好的方法是什么吗?到时候我会修好的。我已经为你修好了。我已经删除了每行代码前面的
符号。我现在明白了,我只需要在前面放4个空格,明白了!泰克斯:不!请看这里:我真的不明白。。你能再清楚一点吗?我是PowerShell和脚本方面的新手,对此我很抱歉。这是AD Get-*cmdlet筛选器的一种特性。您可以使用筛选器脚本块或筛选器字符串。脚本块中的变量不会展开,但如果在可展开字符串中使用字符串过滤器,它们会展开。谢谢Raf!我已经为此奋斗了很长一段时间了,我真的很高兴在你的帮助下它终于开始工作了。谢谢你,伙计!