【问题标题】:Import Module with an different user account使用不同的用户帐户导入模块
【发布时间】:2017-01-28 04:25:39
【问题描述】:

您是否可以使用不同的用户帐户通过 PowerShell 导入模块?我正在尝试使用与当前登录帐户不同的帐户导入 ActiveDirectory 模块。

我不想为控制台全力以赴,因为我试图在部分代码完成后使用当前的 Outlook 进程发送电子邮件,如果整个控制台被提升,它将给出一个COM 错误(PowerShell 和 Outlook 的实例没有一起提升)。

发送电子邮件或通过 Send-Mail 的 SMTP 方式不起作用,因为即使我可以 ping SMTP 服务器,我也会收到以下错误消息,据我所知,这是因为我无法通信正确使用 SMTP 服务器?

使用“1”参数调用“发送”的异常:“发送邮件失败。” 在 C:\Users\\Desktop\SCRIPT.ps1:64 char:9 + $SMTP.Send($MSG) + ~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SmtpException

【问题讨论】:

  • 您可以使用psexec.exe 以其他用户身份启动一个新进程,然后返回您需要的内容。

标签: powershell active-directory


【解决方案1】:

您不能使用其他帐户导入模块,因为它不能以这种方式工作。您需要使用其他凭据自行运行各个命令。

正如您提到的 AD,我以 Get-ADUser 为例,但许多 powershell 命令都有 CredentialPSCredential 某种类型的参数,请查看文档以找出答案。

$Credentials = Get-Credential

Get-ADUser JohnSmith -Properties DistinguishedName -Credential $Credentials

上面的示例将提示输入凭据,但您也可以将它们保存在脚本中,而不是每次都输入它们。

注意:将凭据保存在文件中并不安全,因此请注意保存的凭据和存储位置!

$Username = "DomainUserName"
$Password = "PlainPassword" | ConvertTo-SecureString -AsPlainText -Force
$Credentials = New-Object System.Management.Automation.PSCredential($Username ,$Password)

还有other ways 来保存凭据,但这里太多了。

【讨论】:

  • 谢谢。这对我有帮助 - Get-Credential 并向每个命令添加 -Credential 参数。
【解决方案2】:

powershell 的 AD 模块是 .NET 框架的 System.DirectoryServices 代码命名空间的大部分包装器。

.NET 反过来封装在旧的 COM ADSI 组件之上。

因此,可以使用 Windows 缓存的凭据来处理 AD 工作,而无需使用 -Credential 选项。

如果您在运行脚本之前缓存 Windows 域凭据,AD cmdlet 将使用这些缓存的凭据向 DC 进行身份验证。当然,不需要删除缓存的凭证……但要意识到它是静态的。如果域中密码发生变化,需要重新缓存凭据。

域凭据的管理也可以通过命令行以及使用自 Win7 以来存在的cmdkey.exe 程序来完成。使用此命令行工具,您可以在运行脚本之前设置 Windows 凭据,然后在之后删除凭据。

请注意,缓存凭据的使用仅基于 cmdlet 将尝试通信的服务器名称。如果您没有在 cmdlet 调用中指定 DC,那么它将使用 %logonserver% 环境变量。

关键部分是 ADSI 使用的服务器名称必须与凭据缓存中的完全匹配。如果使用短名称 (server01),则它必须在缓存中。如果使用完整的 dns 名称 (server01.domain.com),那么它必须在缓存中。如果您觉得您的脚本可能会更改为另一台服务器,那么该服务器必须在缓存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2023-03-11
    • 1970-01-01
    • 2014-07-27
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多