利用 PowerShell 远程执行任务:构建企业级运维脚本

冷漠man

冷漠man

2026-07-29

503人浏览

原创

powershell远程执行需确保安全、稳定、可审计:1.启用winrm并配置https;2.严格授权用户/组;3.避免硬编码凭据,用加密文件或jea;4.批量执行限并发、设超时、结构化日志;5.上线前验证域环境、路径、异常、版本与ci管控。

powershell 远程执行不是简单地加个 -computername 就能用好,关键在于安全、稳定、可审计的落地能力。企业环境里,盲目启用 winrm 或硬编码凭据会直接带来权限失控和横向渗透风险。

启用远程管理必须做好的三件事

默认情况下 PowerShell Remoting(基于 WinRM)是关闭的,不能跳过配置直接调用 Invoke-Command

  • 在目标主机上运行 Enable-PSRemoting -Force:它自动启动 WinRM 服务、配置监听器、设置防火墙规则,并注册 PowerShell 会话配置。注意需以管理员身份运行。
  • 验证网络连通与端口可达性:WinRM 默认使用 HTTP 的 5985 或 HTTPS 的 5986 端口。建议优先启用 HTTPS(需证书),避免明文传输凭据和命令内容。可用 Test-NetConnection target-server -Port 5986 快速确认。
  • 严格限制可访问的用户或组:通过 Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI 图形化设置 ACL,或用 Set-PSSessionConfiguration -Name Microsoft.PowerShell -GrantTo 显式授权域安全组(如 "DOMAIN\Servers-Admins"),禁止对 Everyone 或 Users 开放。

避免凭据硬编码:用 Credential 和 Just Enough Administration(JEA)分级控制

脚本里写 $cred = Get-Credential 交互式输入只适合调试;生产脚本必须规避明文密码和交互依赖。

微软文字转语音
微软文字转语音

微软文本转语音,支持选择多种语音风格,可调节语速。

下载
  • 使用已导出的加密凭据文件:在受信管理员工作站上,用 Export-Clixml 保存凭据(仅当前用户可解密),脚本中用 Import-Clixml 加载。例如:
    # 一次生成(管理员手动运行)
    Get-Credential "DOMAIN\svc-powershell" | Export-Clixml C:\Scripts\ps-cred.xml
    # 脚本中加载
    $cred = Import-Clixml C:\Scripts\ps-cred.xml
  • 对非管理员任务启用 JEA 端点:比如只允许重启 IIS 应用池、查询磁盘空间、轮转日志。创建自定义会话配置(New-PSSessionConfigurationFile),绑定到受限的 Role Capability 文件,再注册为独立端点(如 Microsoft.PowerShell.IIS-Monitor)。运维人员连接时只能执行预定义命令,无法提权或执行任意 PowerShell。

批量执行要防雪崩:加超时、重试、限并发、记日志

一次性对 200 台服务器运行 Invoke-Command 很容易触发 WinRM 队列阻塞、目标 CPU 突增或网络拥塞。

  • -ThrottleLimit 控制并发数:默认是 32,高密度环境建议设为 10–20。配合 -AsJob 异步提交,再用 Get-Job + Receive-Job 统一收集结果。
  • 必设 -TimeoutSec 和错误捕获逻辑:WinRM 默认超时 3 分钟,但某些卡死的服务器可能 hang 更久。建议设为 90 秒,并在 try/catch 中判断 $_.Exception.Message 是否含 "The client cannot connect to the destination specified"(网络/WinRM 未就绪)或 "Access is denied"(权限问题),区分处理。
  • 结构化记录每台机器的执行状态:不要只靠 Write-Host。用 [PSCustomObject] 输出统一对象流,包含 ServerNameStatus(Success/Failed/Timeout)、DurationMsOutputError,最后导出为 CSV 或发给 SIEM 系统。

上线前必须验证的五个检查点

脚本开发完成不等于能进生产。以下检查项缺一不可:

  • 目标服务器是否全部加入同一域?工作组模式需额外配置 TrustedHosts(不推荐用于跨网段大规模场景)。
  • 脚本中所有路径(如日志目录、配置文件)是否使用 UNC 或绝对路径?避免因会话工作目录不同导致失败。
  • 是否测试过断网、目标 WinRM 停止、目标 PowerShell 版本低于脚本要求(如用了 ForEach-Object -Parallel 但目标只有 PowerShell 5.1)等异常情况?
  • 脚本是否自带版本号与变更说明?建议在头部写 # Version: 2.1.0 | Updated: 2024-04-10 | By: infra-team,便于回溯。
  • 是否已将脚本纳入源码管理(Git)并配置 CI 流水线做语法校验、模拟执行、权限扫描(如检测是否有 ConvertFrom-SecureString 未指定密钥)?
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

2671

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

1649

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

1295

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

2654

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

2417

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

1659

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

1232

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

1423

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

210

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习