WinRM

Windows 远程管理 (WinRM) 是 WS-Management 协议的 Microsoft 实现。该协议是基于简单对象访问协议 (SOAP) 的、防火墙友好的标准协议,使来自不同供应商的硬件和操作系统能够互操作。WS-Management 协议由硬件和软件制造商群体开发,作为一种公共标准,可用于与实现该协议的任何计算机设备远程交换管理数据。WinRM自动安装在所有当前支持的Windows操作系统版本中。
使用PowerShell对服务器远程管理,要在远程服务器上启用WinRM。

WinRM常用命令

  • 查找侦听器和地址。
winrm e winrm/config/listener
  • 检查配置设置的状态
winrm get winrm/config
  • 快速配置WinRM( 注意:需要"以管理员身份运行")
winrm quickconfig

命令将会执行这些操作

  • 启动 WinRM 服务,并将服务启动类型设置为 “自动启动”。
  • 为在任何 IP 地址上使用 HTTP 或 HTTPS 发送和接收 WS-Management 协议 消息 的端口配置侦听器。
  • 定义 WinRM 服务的 ICF 异常,并打开 HTTP 和 HTTPS 端口。

如果WinRM服务已经在服务器上启动,则会出现以下内容
在这里插入图片描述
更多WinRM服务命令可查看官网
Installation and configuration for Windows Remote Management

PowerShell脚本保存凭据方法

使用Get-Credential命令来交互式输入凭据(用户名+密码),可以先将凭据保存到一个变量中,如:

$cred = get-credential

Invoke-Command

Invoke-Command在本地和远程计算机上运行命令,并从命令返回所有输出,包括错误。

 -ComputerName<string[]>

若要在远程计算机上运行单个命令,请使用“ComputerName”参数。该参数指定运行该命令的计算机,默认是本地计算机。当您使用ComputerName参数时,PowerShell将创建一个仅用于运行指定命令的临时连接,然后关闭该连接。
要在“ComputerName”的值中使用IP地址,命令必须包含“Credential”参数。计算机必须配置为HTTPS传输,或者必须在本地计算机上的 WinRM TrustedHosts 列表中包含远程计算机的 IP 地址。

 -Port <int>

指定远程计算机上用于此命令的网络端口。用于WinRM默认监听端口被更改的情况下,指定新的端口。

-Session <PSSession[]>

在指定的 Windows PowerShell 会话 (PSSession) 中运行此命令。

通过创建 PSSession,Windows PowerShell 可以建立与远程计算机的持续性连接。

-Credential <PSCredential>

指定有权执行此操作的用户帐户。默认值为当前用户。

-command/-ScriptBlock <scriptblock>

指定要运行的命令。用大括号 ({ }) 括起命令以形成脚本块。

-FilePath <string>

在一台或多台远程计算机上运行指定的本地脚本。

-AsJob

在远程计算机上将命令作为后台作业运行。使用此参数可运行需要较长时间才能完成的命令。

使用 AsJob 时,此命令返回代表作业的对象,然后显示命令提示符。要管理作业,请使用 Job cmdlet。要获取作业结果,请使用 Receive-Job。

-ThrottleLimit <int>

指定为运行此命令可建立的并发连接的最大数目。如果省略此参数或输入 0 值,则使用默认值 32。

PSSession

PSSession即Windows PowerShell会话。当你需要与远程计算机的持续连接时,则使用PSSession。PSSession相关命令:

Enter-PSSession

启动与远程计算机间的交互式会话。

New-PSSession

创建PSSession,并返回一个表示PSSession的对象。你可以将对象保存在变量中。要运行一系列共享数据的相关命令,请使用New-PSSession cmdlet在远程计算机上创建一个PSSession ,然后使用Invoke-Command的Session参数在PSSession中运行该命令。

Get-PSSession

获取当前会话中创建的PSSession。Get-PSSession返回与New-PSSession返回的对象相同类型的对象。

Remove-PSSession

删除 PSSession 并释放其正在使用的资源。

将计算机名称添加到TrustedHosts列表

若要将所有计算机添加到受信任主机列表,请使用以下命令 :

set-item wsman:localhost\client\trustedhosts -Force -value *

还可以使用通配符 (*) 将特定域中的所有计算机添加到受信任主机列表。

例如,以下命令将Fabrikam域中的所有计算机添加到受信任主机列表。

set-item wsman:localhost\client\trustedhosts *.fabrikam.com

若要将特定计算机的 IP 地址添加到受信任主机列表,请使用以下命令格式(IP支持通配符*):

set-item wsman:\localhost\Client\TrustedHosts -value "<IP Address>[,<IP Address>]"

若要查看受信任主机列表,请使用以下命令:

get-item wsman:\localhost\Client\TrustedHosts

三种方法查看远程磁盘大小

通过脚本块、脚本文件的一次性执行来处理信息:这种场景,是在本地计算机与远程计算机上建立一个临时会话。将脚本块或者脚本文件的内容发送到远程计算机执行,并将结果发回本地计算机。
这种方法执行效率很高,是PowerShell推荐的执行远程命令的方法。除非需要在会话中共享数据,否则建议使用该方法。

# 用户输入凭据(用户名+密码)
$cred=get-Credential
# 远程执行命令
invoke-command -computername 192.168.2.52 -Credential $cred -command {Get-WmiObject -Class Win32_LogicalDisk}
invoke-command -computername 192.168.2.52 -Credential $cred -ScriptBlock {Get-WmiObject -Class Win32_LogicalDisk}
# 远程执行脚本 test.ps1
invoke-command -computername 192.168.2.52 -Credential $cred  -FilePath .\test.ps1
  1. windows服务器远程执行命令(PowerShell+WinRM)
  2. Invoke-Command官方说明
  3. WinRM官方说明
  4. about_Remote_Troubleshooting
目录知识储备WinRMPowerShell脚本保存凭据方法Invoke-CommandPSSession将计算机名称添加到TrustedHosts列表三种方法查看远程磁盘大小知识储备WinRMWindows 远程管理 (WinRM) 是 WS-Management 协议的 Microsoft 实现。该协议是基于简单对象访问协议 (SOAP) 的、防火墙友好的标准协议,使来自不同供应商的硬件和操作系统能够互操作。WS-Management 协议由硬件和软件制造商群体开发,作为一种公共标准,可用于与实现该 # Configure a Windows host for remote management with Ansible # ----------------------------------------------------------- # This script checks the current WinRM (PS Remoting)
本文直接参考了博客园软件人生的文章操作的,写在这里只为做个记录. 到公司这边先把两个报表服务器接收了. 为防止宕机,部署个磁盘警告的SSIS包. Step 1 建立两个变量来接收和写入磁盘容量 Step 2 创建 WMI和SMTP 连接管理器 Step 3 拖个WMI Data Reader Task,并进行配置 注意,几乎每个选项都要改 SELECT Fr...
/dev/mapper/systemvg-rootlv 7.9G 5.4G 2.2G 72% / tmpfs 3.9G 12K 3.9G 1% /dev/shm /dev/vda1 1