Day*_*opo 0 powershell active-directory
我编写了一个脚本来分析我每天正在处理的广告。
\n\n过去几个月它工作得很好,没有错误,但今天早上出现了一个错误,我不明白为什么。
\n\n这是在执行期间:
\n\n$adm_disabled = ((Get-ADUser -LDAPFilter "(admincount=1)" | Where {$_.enabled -ne $true}).count) - 2\nWrite-Host "ADMIN ACCOUNTS DISABLED : "$adm_disabled\nRun Code Online (Sandbox Code Playgroud)\n\n我收到以下错误(我以前从未遇到过,顺便说一句,它是法语的):
\n\n$adm_disabled = ((Get-ADUser -LDAPFilter "(admincount=1)" | Where {$_.enabled -ne $true}).count) - 2\nWrite-Host "ADMIN ACCOUNTS DISABLED : "$adm_disabled\nRun Code Online (Sandbox Code Playgroud)\n\n已翻译
\n\n\xc3\x89chec lors de l\xe2\x80\x99appel de la m\xc3\xa9thode, car [Microsoft.ActiveDirectory.Management.ADPropertyValueCollection] ne contient pas de m\xc3\xa9thode nomm\xc3\xa9e \xc2\xab\xc2\xa0op_Subtraction\xc2\xa0\xc2\xbb.\nAu caract\xc3\xa8re D:\\Users\\pmonties\\OneDrive - Professional\\Documents\\Scripts_PS_Test\\ANALYSE_AD.ps1:29 : 1\n+ $adm_disabled = ((Get-ADUser -LDAPFilter "(admincount=1)" | Where {$_ ...\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : InvalidOperation : (op_Subtraction:String) [], RuntimeException\n + FullyQualifiedErrorId : MethodNotFound\nRun Code Online (Sandbox Code Playgroud)\n\n我不明白,为什么减法突然不起作用了?
\n该错误表示“从类型的对象中进行减法[Microsoft.ActiveDirectory.Management.ADPropertyValueCollection]是不可能的”。
当您尝试对不支持算术的东西进行算术时,总是会发生这种类型的错误:
# fails the same way:
@() - 2
Run Code Online (Sandbox Code Playgroud)
就你而言,你做
(($something).count) - 2
Run Code Online (Sandbox Code Playgroud)
与实际情况无关$something,您的期望是对.Count这些事物进行计数,因此是一个数字。
但如果$something偶然拥有一个名为 的自己的财产,会发生什么呢Count?然后 PowerShell 会更愿意为您提供该属性,如果它不是数字,而是ADPropertyValueCollection,则会出现上述错误。
$a = @{ some = "object" }
$b = @{ some = "object"; Count = 1,2,3 }
$a.Count - 2 # succeeds
$b.Count - 2 # fails with "[System.Object[]] does not contain a method named 'op_Subtraction'
Run Code Online (Sandbox Code Playgroud)
为了防止这种情况,您可以使用Measure-Object,它返回一个MeasureInfo,其中有一个数字Count:
($something | Measure-Object).count - 2
Run Code Online (Sandbox Code Playgroud)