Поле Get-adcomputer в переменную включает в себя cr / lf - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь получить различающееся имя компьютера, установить его в переменную $dname Затем я могу использовать команду отключения компьютера disable-adaccount -Identity $dname

$hostname установлено ОК как "WIN10TEST1" При использованииэта команда

$dname = (Get-ADcomputer -Identity "$hostname" | select DistinguishedName | ft -hide)

Сбой примерно так:

disable-adaccount -Identity $dname

Disable-ADAccount: Невозможно преобразовать 'System.Object []' в тип 'Microsoft.ActiveDirectory.Management.ADAccount 'требуется параметром' Identity '. Указанный метод не поддерживается. В строке: 1 символ: 29 + disable-adaccount -Identity $ dname + ~~~~~~ + CategoryInfo: InvalidArgument: (:) [Disable-ADAccount], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgument, Microsoft.ActiveDirectory.Management.Commands. DisableADAccount

Если я установил переменную вручную

$dname=CN=WIN10TEST1,OU=Workstations,DC=somedomain,DC=local
disable-adaccount -Identity $dname   

Он работает нормально, поэтому проблема с входящей переменной.

При проверке возвращаемых данных в$dname возвращается с cr/lf до и после нужных мне данных. Я думаю, что это срабатывает.

$hostname = "WIN10TEST1"
$dname = (Get-ADcomputer -Identity "$hostname" | select DistinguishedName | ft -hide)
disable-adaccount -Identity $dname

Примечание: отметьте $dname ..... возвращается с cr/lf до / после данных

Я ожидаю получить distinquishedname строка без других данных

CN=WIN10TEST1,OU=Workstations,DC=somedomain,DC=local

1 Ответ

1 голос
/ 01 ноября 2019

Как упоминает @Lee_Dailey, нет необходимости использовать Select или Format Table для чего-либо, потому что они предназначены для отображения только и будут непреднамеренно связываться с вашими данными, если вы сохраните эти отформатированные данныев переменную.

С помощью модуля Active Directory PowerShell вы можете просто передать объект Computer в Disable-ADAccount , и он знает, как его идентифицировать и обработать:

$computer = Get-ADcomputer -Identity "$hostname"
Disable-ADAccount -Identity $computer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...