2

Invoke-Commandコマンドレットで何らかの問題が発生しています。 $serverの管理者権限を持つ自分のドメインIDを使用してローカルマシンにログインしています。私は手動で自分の資格情報を入力した場合は、Invoke-Commandコマンドを使用して、私はエラーを取得する:Invoke-Command動作の明確化

Cannot open Service Control Manager on computer ''. This operation might require other privileges.

# Works 
Get-Service -ComputerName $server-ErrorAction Ignore 

# Doesn't work 
$cred = Get-Credential 
Invoke-Command -ComputerName localhost -ScriptBlock {param($serverIPAddress) Get-Service -ComputerName $server -ErrorAction Ignore} -Credential $cred -ArgumentList $server 

この作品を作る組み込みの資格情報について特別な何かがありますか?

答えて

1

これは古典的なケルベロスのダブルホップです。

特別なことは、ローカルコンピュータにユーザーの資格情報があることです。リモートコンピュータと通信して、証明書を送信しなくても証明することができます。

リモートコンピュータが第三者のコンピュータ(セカンドホップ)のものにアクセスする必要がある場合、認証されていないため証明書があると証明できないため、認証できません。

これは設計通りに動作するKerberosです。

ローカルホストにInvoke-Commandを使用してもリモート接続が行われているため、ホップとしてカウントされます。 Get-Serviceコールは2番目のホップです。


考えてみましょう:

Invoke-Command -ComputerName $server -ScriptBlock { Get-Service -ErrorAction Ignore } -Credential $cred 

(限りPowerShellリモート処理がリモートマシン上で有効になっているとして)動作すること。

それ以外の場合は、ケルベロスの委任またはCredSSPを有効にするか、可能であれば、ダブルホップを必要としないように何でもしてください。

Be wary of CredSSP (and delegation in general).

+0

私は前にそれを使ったことがないよう、PowerShellリモート処理をオン避けるために期待していたと私はITチームにそれを売ることができるかどうかわかりません。ご説明ありがとうございます! – Vlad274

+1

@ Vlad274は、Windows server 2012以降では、すぐにpowershellのリモート処理が可能になると考えています。私はそれを可能にすることに賛成する強い議論であることがわかります。それは、躊躇している他のITプロと共鳴しているようです。 – briantist