簡體   English   中英

腳本在 Powershell CLI 中有效,但在 ISE 中或作為 PS1 無效

[英]Script Works in Powershell CLI but not in ISE or as a PS1

當我在 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 中運行,我得到預期的 output,我仔細檢查過的 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”。 它可能不會顯示在控制台中。 我知道腳本與控制台的行尾不同,但 ise 與控制台不同。

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

\rW02418,\rW02427,\rW02430,\rW02434,\rW02438,\rW02439\r

我會做:

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

要么

$WNumbers = echo W02418 W02427 W02430 W02434 W02438 W02439

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM