【问题标题】:PowerShell cmdlet get-service returns different results remotelyPowerShell cmdlet get-service 远程返回不同的结果
【发布时间】:2021-03-02 15:42:38
【问题描述】:

如果我从服务器远程运行以下命令,它会返回一个包含 37 个服务的列表。

get-service -computername <computer name>

如果我连接到远程主机并通过远程会话运行相同的命令,它会返回一个包含 161 个服务的列表。

new-pssession <computer-mame>
enter-pssession <session id>
get-service

谁能指点我解释一下吗?

【问题讨论】:

    标签: powershell powershell-remoting


    【解决方案1】:

    我无法重现您的结果。试试下面的 sn-ps:

    $ComputerName = 'ComputerName'
    
    $ServiceList = Get-Service -ComputerName $ComputerName
    $ServiceList.count
    
    $PSSession = New-PSSession -ComputerName $ComputerName
    Invoke-Command -Session $PSSession -ScriptBlock {
        $ServiceList = Get-Service
        $ServiceList.count
    }
    

    【讨论】:

    • 奇怪的是,我现在也不能,但我可以在昨天下午和今天早上的每一次尝试中重现它。 sn-ps(和我使用的原始命令)都返回相同的计数。多么奇怪。
    • 我无法将两个答案都标记为正确,尽管两个答案都可以。我已经标记了一个更清晰并提供更多上下文的标记,无意冒犯@neil
    • 所以这似乎是您的计算机或控制台会话的问题,而不是代码的问题。有时好旧的“您是否尝试过关闭它并再次打开它?”有帮助。 ;-)
    • 我最初在两台不同机器上的两个不同终端中运行该命令,试图消除该问题。一位同事也在她的工作站上和我一起测试了它。我根本无法解释这种行为,我在运行失败的终端和会话中运行了成功的。唯一的区别是时间流逝以及我已经开始和结束两者之间的远程会话连接的事实。如果我深入了解它,我会更新调查结果。
    【解决方案2】:

    尝试在远程计算机上调用命令并将结果存储在变量中

    $remoteCommputer = "RemoteComputerName" 
    $GetServiceData = (invoke-command -ComputerName $remoteCommputer -ScriptBlock { get-service })
    

    【讨论】:

    • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请编辑您的答案以添加解释并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多