PowerShell新手求助:脚本中Get-ADUser命令无法正常输出结果
嘿,我帮你排查了下脚本里的问题,主要有几个点会导致Get-ADUser在脚本里无法正常输出结果,一起来解决:
1. 忘记导入ActiveDirectory模块
控制台里你可能之前手动加载过AD模块,但脚本独立运行时不会自动加载这个模块,所以必须在脚本开头明确导入:
Import-Module ActiveDirectory -ErrorAction Stop
注意:运行脚本的PowerShell窗口最好以管理员身份打开,确保有权限访问AD模块。
2. 函数调用的冗余赋值
在Get-function里,$script:ChosenFunction=userInfo这行完全没必要,直接调用userInfo函数就行,赋值这个变量不会帮你输出结果,反而容易造成逻辑混淆。
3. Exit选项的Switch分支缺失
你菜单里写了X. Exit,但Switch语句里只处理了5对应Exit,输入X时会导致$Choice为空,需要补上对应分支:
"X" {$Choice="Exit"}
修改后的完整脚本
# 导入AD模块,确保脚本能找到Get-ADUser命令 Import-Module ActiveDirectory -ErrorAction Stop Clear-Host $script:ChosenFunction = Get-function function Get-function { Write-Host "1. IP (future addon)" Write-Host "2. UserInfo" Write-Host "3. CopyZ (Future addon)" Write-Host "4. Local Users (Future addon)" Write-Host "X. Exit" $Action = Read-Host "Choose an action:" Switch ($Action) { 1 {$Choice="IP"} 2 {$Choice="UserInfo"} 3 {$Choice="CopyZ"} 4 {$Choice="Local Users"} "X" {$Choice="Exit"} # 修正Exit选项的分支 } Write-Host "Function chosen is $Choice" if ($Action -eq 2) { Write-Host "if is working" userInfo # 直接调用用户信息查询函数 } } function userInfo { cls $Name = Read-Host "Enter user name: " Write-Host "finding $Name" # 加上ErrorAction方便排查找不到用户的情况 Get-ADUser $Name -Properties Description -ErrorAction Stop }
额外排查点
如果还是没输出,可以试试:
- 确认输入的用户名是AD中存在的正确账号(先在控制台单独运行
Get-ADUser jdoe -Properties Description验证) - 在
Get-ADUser后面加上| Out-Host强制输出到控制台,比如:Get-ADUser $Name -Properties Description | Out-Host
内容的提问来源于stack exchange,提问作者Ian Oberdorf
相关产品推荐
相关产品推荐

