[英]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.