get-aduser证书奇怪的错误

时间:2018-06-08 09:38:18

标签: powershell

我正在尝试使用“证书”属性获取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”

我在列表末尾收到用户和证书列表以及上面的错误。 但是如何将数据传递给变量呢?尝试了错误,仍然没有结果。

3 个答案:

答案 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
    }