我在注销期间无法从任务计划运行 Powershell 文件。简而言之,我正尝试将我的 NTUSER.DAT(漫游配置文件)上传到文件服务器上的配置文件文件夹。动态 VLAN 交换不支持漫游配置文件,因此我必须使用脚本来解决此问题。我的脚本如下:
start-sleep -s 15
Set-Content -Path "C:\Temp\log.txt" -Value "Hello World"
$FileServer = 10.10.5.5
$FQDN = "$Env:UserDomain"
$User = Get-WmiObject -Class Win32_NetworkLoginProfile | Sort-Object -Property LastLogon -Descending | Select-Object -Property * -First 1 | Where-Object {$_.LastLogon -match "(\d{14})"} | Foreach-Object { New-Object PSObject -Property @{ Name=$_.Name.TrimStart("$FQDN\") }} | Select -ExpandProperty Name
copy-item -path C:\Users\$User\NTUSER.DAT -destination \\$FileServer\Profiles$\$user.V2\ -force
copy-item -path C:\Users\$User\NTUSER.DAT -destination \\$FileServer\Profiles$\$user.V3\ -force
我有一个任务计划,当事件 ID 4647 发生(注销)时以域管理员身份运行。它设置为以选中的最高权限运行,并且我已启用运行,无论用户是否登录。域管理员帐户还可以访问源和目标上的所有文件。Set-ExecutionPolicy 设置为不受限制。我在任务计划程序中调用 powershell 脚本的方式是:
Action: Start a program
Program/Script: C:\temp\launch.bat
launch.bat 包含以下内容:
Powershell.exe -executionpolicy unrestricted -File "CALL C:\temp\powershell.ps1"
每次用户注销时都会触发任务,我已经在日志中确认了这一点。但 NTUSER.DAT 文件无法复制到网络,实际上甚至没有生成 log.txt 文件。我已确认我的代码可以正常工作,只是任务调度程序部分调用了代码,我认为它失败了。你们能给我指出正确的方向吗?我知道我已经接近了,但不确定我遗漏了什么。