检查是否使用 Powershell 远程启用了 CredSSP
Check if CredSSP is enabled with Powershell remotely
如果启用了 CredSSP,我在尝试检查远程计算机列表时遇到问题。当我的脚本连接到机器并执行命令时。它最终 returning 错误。如果我通过 RDP 连接到同一台机器并执行相同的命令,它将 return 为真。这是我的脚本:
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
}
有没有人对此有深入的了解?
你不是 运行 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
,但无需进行循环并手动创建和删除会话。
如果启用了 CredSSP,我在尝试检查远程计算机列表时遇到问题。当我的脚本连接到机器并执行命令时。它最终 returning 错误。如果我通过 RDP 连接到同一台机器并执行相同的命令,它将 return 为真。这是我的脚本:
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
}
有没有人对此有深入的了解?
你不是 运行 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
,但无需进行循环并手动创建和删除会话。