【问题标题】:Script Works in Powershell CLI but not in ISE or as a PS1脚本在 Powershell CLI 中有效,但在 USE 中或作为 PS1 无效
【发布时间】: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,单行会比我的多行好得多。

标签: powershell powershell-5.1


【解决方案1】:

$wnumbers 中也可能有“`r”。它可能不会显示在控制台中。我知道脚本与控制台的行尾不同,但 ise 与控制台不同。

$WNumbers = 
'
W02418,
W02427,
W02430,
W02434,
W02438,
W02439
'
$WNumbers = $WNumbers.Replace("`n",'')
$WNumbers -replace '
','
'


W02418,
W02427,
W02430,
W02434,
W02438,
W02439

我会做:

$WNumbers = -split 'W02418
W02427
W02430
W02434
W02438
W02439'

或者

$WNumbers = echo W02418 W02427 W02430 W02434 W02438 W02439

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 2017-10-12
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多