所以,我相当封闭在我的环境中,但也许还有一些我还没有想到的方法来完成这件事......
需要将一个平面文件从计算机 A 复制到计算机 B,最好通过计划任务来运行,无论是否有人登录。我试图使用 SYSTEM 帐户的 PSExec 启动 Powershell 的远程会话(psexec -s \remotecomputername powershell.exe c:\batch\script.ps1),调用我的脚本,然后该脚本将使用一组定义的凭据来复制文件。
我的挑战是双重的。
在计算机上强制执行 GPO,以防止在本地系统上存储用于网络身份验证的密码和凭据。因此,我只能使用 SYSTEM 帐户来启动它。
强制执行第二个 GPO,通过定义策略但不包含任何条目(空白),有效地禁用计算机和用户帐户的委派信任。我在创建脚本时遇到了这个问题(如下)。它调用预定义的用户名,然后调用该用户的先前定义的密码(加密),然后将其用作凭据来映射驱动器并复制文件,但由于委派被有效阻止,这将不起作用。
我是不是陷入困境了?或者你能想到其他方法来实现这一目标吗?
这是我的原始脚本...
$ComputerName = "\\RemoteComputerName\D$"
$UserName = "MyAcccountName"
$Password = Get-Content 'c:\batch\EncryptedPwdFile.txt' | ConvertTo-SecureString
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $Password
New-PSDrive -Name M -PSProvider FileSystem -Root $computername -Credential $credential
Copy-Item -path C:\Batch\TestFolder\TestFile2.txt -Destination "J:\testfile2.txt"
答案1
虽然可能有很多方法可以编写脚本,但我个人更喜欢使用专门为此设计的程序。该程序同步备份我想到了一个功能,它能够完全满足您的要求。它可以备份文件/文件夹,创建无需任何人登录即可自动运行的任务,并且可以保存源和目标的凭据。需要记住的一件事是,如果您的系统管理员设置了 GPO,他们可能会监视登录,如果他们深入研究,他们可能会检测到您的计划任务。但考虑到您使用的是系统帐户,这有点令人怀疑,因为这是一个不应允许用户使用的帐户(除非您的术语有点不对)。
答案2
我终于让它工作了……由于密码文件必须由调用它的用户加密(在我的情况下是 NT Authority\SYSTEM),我以系统帐户身份调用 PSEXEC 并交互(psexec -s -i)来创建密码文件。之后,创建计划任务很简单,以 SYSTEM 身份运行以调用 powershell 和脚本文件。一切都很完美!感谢大家的关注。