检查是不是通过 Powershell 远程启用了 CredSSP
Posted
技术标签:
【中文标题】检查是不是通过 Powershell 远程启用了 CredSSP【英文标题】: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
有人对此有见解吗?
【问题讨论】:
【参考方案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 一起使用,但这通常适用于需要运行多个不同脚本块或需要远程维护会话状态的更复杂的情况。我想我已经很久没有写任何需要它的东西了。但是,它确实有效。以上是关于检查是不是通过 Powershell 远程启用了 CredSSP的主要内容,如果未能解决你的问题,请参考以下文章
powershell 使用PowerShell启用Windows远程桌面连接