gpt4 book ai didi

powershell - 从Powershell(Get-ADuser)的写主机输出中删除某些字符

转载 作者:行者123 更新时间:2023-12-03 01:02:59 27 4
gpt4 key购买 nike

我正在使用以下两个步骤比较两个域之间的用户,以确保在一个域中被禁用的用户在另一个域中被禁用的用户:

域1:

Get-ADUser -SearchBase "OU=ou2,OU=ou1,DC=pre,DC=domain1,DC=com" -Filter * -Properties * | Select-Object Name | Export-Csv -encoding "utf8" Users.csv

域2:
$input = import-csv -path "Users.csv" 
ForEach ($User in $input) {
$result = get-aduser -SearchBase "OU=ou2,OU=ou1,DC=pre,DC=domain2,DC=com" -Filter "name -eq '$($User.Name)'" | Select-Object Enabled
If ($result -eq $null) { Write-host -ForegroundColor Yellow $User "Name not found. Please do a manual check"
}
elseif ($result -like '*False*')
{
Write-host -ForegroundColor Red "**" $User "** must be disabled!"
}
else {get-aduser -SearchBase "ou=Users,ou=SCS,ou=All,dc=osit,dc=ad" -Filter "name -eq '$($User.Name)'" -Properties * | Select-Object Name, Enabled}
}

这有效,但是给了我以下输出:
Name                          Enabled
---- -------
Firstname1 Lastname1 True
@{Name=Firstname2 Lastname2} - Name not found. Please do a manual check

如何删除“@ {Name =“和”}“?
我尝试将-ExtendProperity添加到$ result,并且替换不成功。我可能做错了..

最佳答案

$User是一个自定义对象(类型为[pscustomobject],由Import-Csv输出),而@{Name=Firstname2 Lastname2}是其字符串表示形式[1],因为Write-Host对其参数进行字符串化以进行显示。

而是访问.Name属性以获取名称:

Write-host -ForegroundColor Yellow $User.Name "- Name not found. Please do a manual check" 

更习惯地说,使用单个可扩展字符串( "..."内的字符串插值):
Write-host -ForegroundColor Yellow  "$($User.Name) - Name not found. Please do a manual check" 

如果要包括完整的对象表示形式(如将其直接打印到控制台上一样),则需要 Out-String,但请注意,最终将得到多行输出:
Write-host -ForegroundColor Yellow  "$($User | Out-String) - Name not found. Please do a manual check" 

[1]您可以如下验证: $user = [pscustomobject] @{ Name = 'Firstname1 LastName1' }; "$user"。输出为字符串 @{Name=Firstname1 LastName1}

关于powershell - 从Powershell(Get-ADuser)的写主机输出中删除某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264123/

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