美文网首页
PowerShell - 远程访问 Windows Server

PowerShell - 远程访问 Windows Server

作者: 娃哈哈喜之郎 | 来源:发表于2020-03-31 17:38 被阅读0次

    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 $_ }
    

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

    相关文章

      网友评论

          本文标题:PowerShell - 远程访问 Windows Server

          本文链接:https://www.haomeiwen.com/subject/clkguhtx.html