我正在尝试使用“证书”属性获取AD用户列表。但是当我在做什么时
$users = Get-ADUser -searchbase "CN=Users,DC=mydomain,DC=com" -filter * -Properties “Certificates”
我收到了奇怪的错误
Get-ADUser : Cannot find the requested object.
At line:1 char:10
+ $users = Get-ADUser -searchbase "CN=Users,DC=mydomain,DC=com" -filte ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ADUser], CryptographicException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.Security.Cryptography.CryptographicException,Microsoft.Ac
tiveDirectory.Management.Commands.GetADUser
当我这样做时没有变量
Get-ADUser -searchbase "CN=Users,DC=mydomain,DC=com" -filter * -Properties “Certificates”
我在列表末尾收到用户和证书列表以及上面的错误。 但是如何将数据传递给变量呢?尝试了错误,仍然没有结果。
答案 0 :(得分:0)
我正在获取用户和证书列表以及上面的错误 列表的结尾。但是如何将数据传递给变量?
这是一个近在咫尺的问题。
我已经制作了一个函数(f)来重现这个问题:
function f { write-output $(1..100); throw 'bs' }
如果您运行f
,您将获得数字1到100,然后是例外。你有类似的情况;然后输出炸弹。
我从来没有找到一个好方法来处理这个问题。这就是我的工作:
f 1> stuff.txt; $o = cat .\stuff.txt; rm stuff.txt -force
数字应该转到stdout和stderr的异常。或者,我想。 : - )
我将输出(数字1到100)发送到文件,将文件读入变量,然后删除文件。这会将输出作为一个变量,但它的方式很粗糙。
希望某人发布更好的内容,但如果您处于紧要状态,这应该可以帮助您。
答案 1 :(得分:0)
我只是将用户的samaccountnames扔进了foreach。
$users = Get-ADUser -Filter * -SearchBase "CN=Users,DC=mydomain,DC=com" | select -ExpandProperty samaccountname
foreach ($u in $users) {
....
}
答案 2 :(得分:0)
如果对命令使用Where-Object,会发生什么情况:
$users = Get-ADUser -SearchBase "CN=Users,DC=mydomain,DC=com" -Properties * |
Where-Object { $null -ne $_.Certificates } |
ForEach-Object {
# write out whatever properties you need for each user
}