【问题标题】:execute command as domain user以域用户身份执行命令
【发布时间】:2018-01-20 10:38:28
【问题描述】:

我想使用域用户运行以下命令:

New-DfsReplicationGroup -GroupName "RG01"

我尝试了 2 种方法,但都报错:

1). Start-Process powershell -Credential domain.com\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"
2). Invoke-Command -Credential domain.com\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"

请指教。

【问题讨论】:

  • 您收到哪些错误消息?如果您以 domain.com\Admin 身份登录并简单地运行 'New-DFSReplicationGroup -GroupName "RG01"',该操作是否有效?

标签: powershell microsoft-distributed-file-system


【解决方案1】:

您正在尝试使用较低级别的 WinNT 登录,但指定域 fqdn。

改变这个...

Start-Process powershell -Credential domain.com\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"
Invoke-Command -Credential domain.com\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"

为此...下面的每一个都将使用用户信息自动填充密码对话框,当然您仍然需要输入密码。

Start-Process powershell -Credential domain\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"
Invoke-Command -Credential domain\Admin -password abc1234 New-DfsReplicationGroup -GroupName "RG01"

永远不要在脚本中以纯文本形式输入密码

所以,使用

$DomainUserCreds = Get-Credential -Credential 'Domainname\Username'
Start-Process powershell -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"
Invoke-Command -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"

如果您以域管理员身份登录,则可以动态获取此信息

$DomainUserCreds = Get-Credential -Credential "$env:USERDOMAIN\$env:USERNAME"
Start-Process powershell -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"
Invoke-Command -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"

如果您的域设置为使用 UPN,您可以这样做

$DomainUserCreds = Get-Credential -Credential "$env:USERNAME@$env:USERDNSDOMAIN"
Start-Process powershell -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"
Invoke-Command -Credential $DomainUserCreds New-DfsReplicationGroup -GroupName "RG01"

【讨论】:

  • 非常感谢您的回复!!!问题是我在后端运行这个脚本,当我再次测试它时询问密码时,尽管我已经提到了-password。应该试试 --force 吗?
  • 因此,您正尝试从管理员工作站在远程计算机上运行此程序,但您以一种方式登录,例如非管理员,并希望使用凭据在远程主机上运行代码对远程主机有管理员权限?如果是这样的话,你应该做这样的事情.. Invoke-Command -ComputerName 'RemoteComputerName' -ScriptBlock {'Your code here'} -Credential $DomainUserCreds
猜你喜欢
  • 1970-01-01
  • 2014-08-03
  • 2010-11-08
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2019-12-20
相关资源
最近更新 更多