Eu voltei para isso depois de um breve hiato para olhar novamente com olhos novos (tanto meus quanto um colega de trabalho) e decidi voltar ao básico novamente:
No cliente que executei (no shell do administrador):
enable-wsmancredssp -role client -delegatecomputer devremvm03 -force
No servidor que eu executei (no shell do administrador):
enable-wsmancredssp -role server -force
Ambos retornaram a saída normal, indicando que o CredSSP agora era "verdadeiro".
Depois, usei o seguinte código de exercitador para percorrer os níveis crescentes de complexidade:
$block = {
Write-Host ("hello, world: {0}, {1}" -f $env:USERNAME, (hostname))
}
$username = "test_user"
$password = "..."
$adjPwd = $password | ConvertTo-SecureString -asPlainText -Force
$testCred = (New-Object System.Management.Automation.PSCredential($username,$adjPwd))
switch ($choice)
{
"basic" { Invoke-Command $block }
"remote" { Invoke-Command $block -computername $serverName }
"credentialA" { Invoke-Command $block -computername $serverName -credential $testCred }
"credentialB" { Invoke-Command $block -computername $serverName -credential $testCred -Authentication Credssp}
"session" {
$testSession = New-PSSession -computername $serverName -credential $testCred -Authentication Credssp
if ($testSession) { Invoke-Command $block -Session $testSession; Remove-PSSession $testSession }
}
}
Tudo isso está no meu script run.ps1, então a transcrição foi a seguinte (e isso foi executado em um shell não -administrator):
PS C:\> .\run.ps1 basic
hello, world: msorens, MyLocalMachine
PS C:\> .\run.ps1 remote MyRemoteServer
hello, world: msorens, MyRemoteServer
PS C:\> .\run.ps1 credentialA MyRemoteServer
hello, world: test_user, MyRemoteServer
PS C:\> .\run.ps1 credentialB MyRemoteServer
hello, world: test_user, MyRemoteServer
PS C:\> .\run.ps1 session MyRemoteServer
hello, world: test_user, MyRemoteServer
Anteriormente, apenas funcionava o básico, remoto e credencialA. Agora todos os 5 trabalhos. Ufa!