PowerShell - 远程访问 Windows Server 服务器

PowerShell 是 Windows Server 服务器的运维管理的利器,提高了运维效率,不能停留在蛮荒的人工手动维护的时代,尤其是面对同时维护多台服务器,PowwerShell 的优势发挥的淋漓尽致。

下面我们来看下远程访问服务器的,建立服务器远程连接的会话,以及会话的管理。

首先看下本地计算机是否开发 WinRM 服务

Get-Service WinRM

控制台打印的结果的显示,该服务的 Status 是 Running 状态

Status   Name               DisplayName
------   ----               -----------
Running  WinRM              Windows Remote Management (WS-Manag...

如果服务没有启动,可以通过下面的 cmdlet 启动服务

Start-Service WinRM

为了使本地计算机能够远程访问服务器,首先需要在远程服务器上启用远程管理

Enable-PSRemoting –Force

在本地和远程计算机上同时设置受信任的主机名

Set-Item wsman:\localhost\client\trustedhosts *

重启 WinRM 服务

Restart-Service WinRM

测试能不能连接远程服务器

Test-WsMan '192.168.1.234'

到了这一步,我们就要进入重点了,建立远程连接服务器的会话

定义一个函数专门用来创建 Credential 对象,用于会话的认证

function getCred ($username, $password) {
    $pass = ConvertTo-SecureString $password -AsPlainText -Force
    $cred = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $pass
    return $cred
}
$cred = getCred -username $username -password $password

通过 new-PSSession 建立会话

$server = '192.168.1.234'
$session = new-PSSession -ComputerName $server -Credential $cred

我们可以通过 Get-PSSession 查看已建立起的会话类别

Get-PSSession

通过 Invoke-Command 可以在远程服务器上执行命令,也可以在远程服务器上执行本地的文件

Invoke-Command -Session $session  -ScriptBlock {Get-Process PowerShell}
Invoke-Command -Session $session  -FilePath .\task.ps1

最后在远程服务器上执行完任务后,记得关闭会话

Remove-PSSession -Session $session

清空之前未关闭所有会话

Get-PSSession | ForEach-Object { Remove-PSSession -session $_ }

如果这篇文章对您有帮助,记得给作者点个赞,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容