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 $_ }
如果这篇文章对您有帮助,记得给作者点个赞,谢谢!
网友评论