Если вы вставляете код в уже открытый терминал PowerShell, тогда да, это определенно странно.
Если вы щелкнете правой кнопкой мыши и « Работает с PowerShell », то это ожидаемое поведение, поскольку сценарий завершен. Вам нужно будет указать скрипту, чтобы он оставался открытым после получения информации. Самый простой способ сделать это - заставить скрипт ждать ввода, используя Read-Host
$username = Read-Host 'Please enter Username!'
get-aduser $username -Properties memberof | select -expand memberof
Read-Host 'Done!'
UPDATE
Использование оператора if было бы невозможным, так как он только перехватывает завершающие ошибки, а Get-ADUser не возвращает terminating errors
, вам нужно будет использовать блок try/catch
. Я разработал это решение, чтобы показать вам, как это можно сделать с помощью различных функций PowerShell:)
#Function to search for the user
function searchUser{
Param([string]$userName)
try{
Get-ADUser -Identity $userName -Properties MemberOf | Select-Object -ExpandProperty MemberOf
}catch{
return $false
}
}
#Ask the user for input until a valid username is entered
do {
$userInput = Read-Host "Enter a username: "
}until ($Output = searchUser -userName $userInput)
#Output the value from the searchUser function
Write-Host $Output