【发布时间】:2022-12-10 17:50:10
【问题描述】:
当我在 ISE 中运行脚本时(以管理员身份)出现错误:
Get-ADComputer : Cannot find an object with identity: 'W02439'
+ $WGUID = (Get-ADComputer -Identity $W).ObjectGUID
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (W02439:ADComputer) [Get-ADComputer], ADIdentityNotFoundException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
在 Powershell 中运行,我得到了预期的输出,我仔细检查过的 GUID 编号是正确的 ID。
$WNumbers =
'
W02418,
W02427,
W02430,
W02434,
W02438,
W02439
'
$WNumbers = $WNumbers.Replace("`n",'')
$WNumbers = $WNumbers.Trim()
$WNumbers = $WNumbers.Split(",")
$WNumbers
foreach($W in $WNumbers) {
$WGUID = (Get-ADComputer -Identity $W).ObjectGUID
Write-Host $WGUID
#Add-ADGroupMember -Identity $AOGUID -Members $WGUID -WhatIf
}
我想也许 ISE 没有 ActiveDirectory,所以我最初放置了 Import-Module ActiveDirectory - 这并没有解决它。 我还尝试重新启动 ISE,以非管理员身份运行它,但均无效。 但是当我运行时:
Get-ADComputer -Identity "W02418"
它按预期工作。所以我认为我的问题是它不允许我将变量传递到 ISE 引擎与 PS 中的 -Identity。 (通常数字会存储在文件中并读入等,但我想将代码简化到问题似乎所在的位置,并且将变量传递给 -Identity)
【问题讨论】:
-
$wnumbers 也可能包含
`r。 -
以正确的方式构建您的数组:
$WNumbers = 'W02418','W02427','W02430','W02434','W02438','W02439'如果您确实想从这样的字符串中拆分计算机名称,请记住 Windows 使用 CRLF 换行:$WNumbers = = $WNumbers -split '\r?\n' -split ',' -ne '' -
@js2010 修好了,谢谢!我觉得很蠢,CLI 看不到,因为它们都是单独的行,而“文本编辑器”ISE 会。再次感谢您指出这一点。
-
@Theo 以这种方式格式化它,这样我就可以实际实现拆分、替换等。我只是想熟悉这些方法是如何工作的。还要感谢代码 sn-p,单行会比我的多行好得多。