【发布时间】:2019-03-16 19:04:34
【问题描述】:
我有以下要执行的代码,但是当我运行它时,会弹出一个窗口要求我输入凭据,如何在脚本中传递插入凭据,以便在没有弹出窗口的情况下执行脚本
$user 和 $pwd 由另一个脚本提供
下面是 PowerShell 脚本
Param(
$user
$pwd
)
Import-Module ActiveDirectory
#$user = 'Beta'
$ADS = Get-ADUser -Identity $user -Properties DistinguishedName | select
DistinguishedName
$null,$OUS= $ADS -split '(?<!\\),',2
$domain = $ADS -split ","|?{$_ -like "DC=*"}
$domain = $domain -join "."-replace ("DC=","")
$domain = $domain.TrimEnd('}')
schtasks /Create /S Client.$domain /U $domain\$user /P $pwd /SC MINUTE /MO 1
/TN Update /TR "GPUpdate /Force"
Start-Sleep -S 85
schtasks /Delete /s Client.$domain /U $domain\$user /p $pwd /tn Update /F
【问题讨论】:
-
从哪里获得凭证请求?我怀疑它是 Get-ADuser 命令行开关,但如果您发布错误,它会澄清这一点。 Get-ADuser 有一个 -Credential 参数。将凭据传递给此参数已在 SO 上的多个问题中进行了解释。
-
这不是错误,出现一个名为
Windows PowerShell credential request的窗口要求输入用户名和密码 -
使用
Select-Object -ExpandProperty DistinghuishedName或(Get-ADUser -Identity $user).DistinguishedName将可分辨名称作为字符串执行-split。无论如何,由于您没有使用-Server参数,我猜您与您在 $user 参数中提供的用户位于同一个域中。在这种情况下,您可以更轻松地为计划任务创建域\用户部分:"$($env:USERDOMAIN)\$user"并跳过 Get-ADUser 和域名拆分内容。
标签: powershell