我尝试-Authentication
在使用 PowerShell(2.0)进入时使用 CredSSP 开关,以便远程启动可以写入文件或设置新 PSDrive 的脚本。
当我使用 CredSSP 调用时出现错误Enter-PSSession
,提示目标计算机未获批准。
我在目标计算机上启用了 CredSSP 作为服务器,并在执行的计算机上启用了 CredSSP 作为客户端New-PSSession
,并将委托计算机设置为 *。
我们在一个域中,DC 运行 Windows Server 2008 R2,客户端运行 Windows 7。
在 AD 中,当我查看“属性”->“委派”时,两个站都已获得批准。
我还打开了 gpedit 并激活了指定目标计算机名称的委派。
以下是错误信息(法语):
La connexion au serveur distant a échoué avec le message d'erreur suivant : Le client WinRM ne peut pas traiter la demande. Une stratégie d'ordinateur ne permet pas la délégation des informations d'identification de l'utilisateur à l'ordinateur cible car ce dernier n'est pas approuvé. L'identité de l'ordinateur cible ne peut pas être vérifiée si vous configurez le service WSMAN pour utiliser un certificat valide à l'aide de la commande suivante : winrm set winrm/config/service '@{CertificateThumbprint="<thumbprint>"}' Sinon, vous ouvez rechercher dans l'Observateur d'événements un événement qui spécifie que le SPN suivant n'a pas pu être créé : WSMAN/<computerFQDN>. Si vous trouvez cet événement, vous pouvez manuellement créer le SPN à l'aide de setspn.exe. Si le SPN existe, mais que CredSSP ne peut pas utiliser Kerberos pour valider l'identité de l'ordinateur cible et si vous souhaitez toujours autoriser la délégation des informations d'identification de l'utilisateur à l'ordinateur cible, utilisez gpedit.msc et examinez la stratégie sui vante : Configuration de l'ordinateur -> Modèles d'administration -> Système -> Délégation d'informations d'identification -> Autoriser les nouvelles informations d'identification avec l'authentification du serveur NTLM uniquement. Vérifiez qu'elle est activée et configurée avec un SPN approprié pour l'ordinateur cible. Par exemple, pour le nom d'ordinateur cible « monserveur.domaine.com », le SPN peut être : WSMAN/monserveur.domaine.com ou WSMAN/*.domaine.com. Renouvelez la demande après ces modifications. Pour plus d'informations, voir la rubrique d'aide bout_Remote_Troubleshooting. + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportExc eption + FullyQualifiedErrorId : PSSessionOpenFailed
其他可以阻止 CredSSP 的参数有哪些?
编辑:好的,所以我有一个临时的解决方法,用于在不允许 CredSSP 的远程 PSSession 上安装驱动器。我使用
net use X: \\xxx.xxx.xxx.xxx /user:username password
当我处于远程会话时(即不是 New-PSDrive cmdlet),语法似乎运行良好,即使在远程计算机上使用 Invoke-Command 也是如此。
但仍然需要启用 CredSSP,这将阻止我对凭据进行硬编码......
答案1
PowerShell 2.0 中有一个错误(已在 PS 3.0 中修复):文件系统提供程序应支持凭证
使用任何带有 FileSystem 提供程序的 cmdlet 时,无法提供备用凭据。即使是接受 -Credentials 参数的 New-PSDrive,也不会使用 FileSystem 提供程序接受该参数。
底线是,这个古老的
NET USE
命令比 PowerShell 的 New-PSDrive 更强大……
因此,如果您坚持使用 PS 2.0,则没有办法(据我所知)强制New-PSDrive
cmdlet 使用凭据。存在解决方法,但它们都使用硬编码凭据:
净使用情况(正如您已经做的那样):
net use X: \xxx.xxx.xxx.xxx /user:username password
或者
脚本:
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("X:", "\\server\share", $false, "domain\user", "password")