命令是干什么的
Enter-PSSession 用于建立交互式远程 PowerShell 会话:进入后执行的命令都在远端运行,提示符会变成远端主机名,适合人工排查。会话是有状态的——变量、当前目录与已加载模块都保留在远端,直到执行 Exit-PSSession 或连接中断。
为什么脚本不该用它
自动化场景应使用 Invoke-Command:执行完即返回,不需要维持交互会话,也不会因为网络抖动把命令留在半途。把 Enter-PSSession 写进脚本的典型问题是命令还没结束会话就退出,导致远端资源长期占用与后续连接失败。
基本信息
| 适用平台 | Windows 7/10/11 与各 Server,PowerShell 2.0 及以后 |
|---|---|
| 权限要求 | 目标机需已启用 PSRemoting;跨域或工作组场景需额外信任配置 |
| 语法 | Enter-PSSession -ComputerName 主机 [-Credential (Get-Credential)] |
| 退出与会话 | Exit-PSSession 退出;Get-PSSession 查看活动会话 |
典型使用场景
- 人工排查远程主机问题,需要像在本地一样敲命令
- 在远端环境里测试脚本片段,避免反复上传文件
- 临时查看远端服务、日志与目录结构
- 跨主机复现问题,验证是否与环境相关
- 协同排障时共享实际操作过程
常用示例
常用示例
Enter-PSSession -ComputerName app01
# 以下命令在远端执行
$env:COMPUTERNAME
Get-Service | Where-Object Status -eq 'Stopped' | Select-Object -First 10
Get-PSSession # 查看现有会话
Exit-PSSession # 用完必须退出,否则会话一直占用相关命令读法
| 命令 | 作用 | 注意 |
|---|---|---|
| Enter-PSSession | 进入交互式远程会话 | 同一时间只能有一个活动会话 |
| Invoke-Command | 在远端执行并返回结果 | 自动化场景的首选 |
| New-PSSession | 建立可复用的持久会话 | 适合多命令连续执行 |
| Get-PSSession | 查看现有会话 | 用于排查残留会话占用 |
| Exit-PSSession | 退出交互会话 | 用完必须执行 |
| -Credential | 指定连接凭据 | 用户名格式随环境不同 |
交互式会话是有状态的:变量与当前目录都保留在远端,用完记得 Exit,否则会话会一直占用资源。
不要在交互式会话里启动长任务:网络抖动或客户端关闭会中断连接,远端命令可能停在半途且状态不明。确有长任务需求时,改用 Invoke-Command 或后台作业来执行。