Powershell 使用其他用户帐户导入模块

Powershell 使用其他用户帐户导入模块,powershell,active-directory,Powershell,Active Directory,您是否能够使用其他用户帐户通过PowerShell导入模块?我特别尝试导入ActiveDirectory模块,该模块的帐户与当前登录的帐户不同 不过,我不想全力以赴地使用控制台,因为我试图在完成部分代码后使用当前的Outlook进程发送电子邮件,如果整个控制台提升,则会出现COM错误(PowerShell实例和Outlook不会一起提升) 发送电子邮件或通过发送邮件的SMTP方式无法正常工作,即使我可以ping SMTP服务器,我会收到以下错误消息,这是因为我无法与SMTP服务器进行适当通信 使

您是否能够使用其他用户帐户通过PowerShell导入模块?我特别尝试导入ActiveDirectory模块,该模块的帐户与当前登录的帐户不同

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

发送电子邮件或通过发送邮件的SMTP方式无法正常工作,即使我可以ping SMTP服务器,我会收到以下错误消息,这是因为我无法与SMTP服务器进行适当通信

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


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

正如您提到的AD,我已经使用了一个示例,但是许多powershell命令都有某种
Credential
PSCredential
参数,请查看文档以了解

$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)

还有保存凭据的方法,但这里的内容太多。

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

正如您提到的AD,我已经使用了一个示例,但是许多powershell命令都有某种
Credential
PSCredential
参数,请查看文档以了解

$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)

还有保存凭据的方法,但这里的内容太多了。

powershell的AD模块是.NET framework的System.DirectoryServices命名空间代码的包装器

NET反过来被包装在旧的COM ADSI组件的顶部

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

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

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

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


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

powershell的AD模块是.NET framework的System.DirectoryServices命名空间代码的包装器

NET反过来被包装在旧的COM ADSI组件的顶部

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

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

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

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


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

您可以使用
psexec.exe
以其他用户的身份启动新进程,然后返回所需内容。您可以使用
psexec.exe
以其他用户的身份启动新进程,然后返回所需内容。谢谢。这就是帮助我获得凭证并为每个命令添加凭证参数的原因。谢谢。这就是帮助我-获得证书和添加一个-证书面值