【问题标题】:Check if CredSSP is enabled with Powershell remotely检查是否通过 Powershell 远程启用了 CredSSP
【发布时间】:2016-08-04 19:59:40
【问题描述】:

如果启用了 CredSSP,我在尝试检查远程计算机列表时遇到问题。当我的脚本连接到机器并执行命令时。它最终返回错误。如果我通过 RDP 连接到同一台机器并执行相同的命令,它将返回 true。这是我的脚本:

foreach ($server in $servers.Split(",").Trim()) {
   $pw = ConvertTo-SecureString 'password' -AsPlainText -Force
   $cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentList "Domain\user", $pw
   $session = New-PSSession -ComputerName $server -Credential $cred

   $output = (Get-Item  WSMan:\localhost\Service\Auth\CredSSP).value

   Write-Host $server : $output

   Remove-PSSession -Session $session
}

有人对此有见解吗?

【问题讨论】:

    标签: powershell-3.0 credssp


    【解决方案1】:

    你没有远程运行Get-Item

    试试:

    $ServerList = $servers.Split(",").Trim();
    $pw = ConvertTo-SecureString 'password' -AsPlainText -Force;
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentList "Domain\user", $pw;
    
    Invoke-Command -ComputerName $ServerList -Credential $cred -ScriptBlock { Get-Item  WSMan:\localhost\Service\Auth\CredSSP; } |
        Select-Object PSComputerName, Value;
    

    您可以使用 Invoke-Command -Session $session 代替 Invoke-Command -ComputerName $ServerList,但无需手动创建和删除会话。

    【讨论】:

    • 非常感谢,这很有帮助。我对PS还是很陌生。所以,如果我错了,请纠正我,但是通过使用这些会话调用包装 Get-Item 基本上什么都不做?它只是在本地执行?有没有办法通过会话完成同样的事情?我可能会扩展这个脚本,它会变得更大。
    • @Anthony 是的,就是这样。它在本地执行。您可以将会话与 Invoke-Command 一起使用,但这通常适用于需要运行多个不同脚本块或需要远程维护会话状态的更复杂的情况。我想我已经很久没有写任何需要它的东西了。但是,它确实有效。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2013-09-28
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多