![](/img/trans.png)
[英]How Can I Schedule A Task In Task Scheduler To Run At Startup Every 2 Days?
[英]How can I convince powershell (run through task scheduler) to find my network drive?
我在 Windows 7 上有一个无法正常工作的简单 powershell 脚本。 (这不是 XP 上的问题)
get-psdrive
当我直接运行它时,我得到
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A FileSystem A:\
Alias Alias
C 12.30 11.60 FileSystem C:\
cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
**Q 1486.63 289.41 FileSystem Q:\**
Variable Variable
WSMan WSMan
当我通过任务调度程序运行它时,我得到
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
A FileSystem A:\
Alias Alias
C 12.30 11.60 FileSystem C:\
cert Certificate \
D FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
请注意,我缺少 Q: 驱动器。 如果有任何方法可以解决此问题,我将能够将文件复制到那里....
网络驱动器,以及实际上所有的驱动器号,都被“映射”到给定登录会话的卷。 当您创建计划任务以运行时,它会创建一个新的登录会话(即使您当前已登录)并在该上下文中运行计划任务。 因此,虽然您可能已登录并映射了 Q 驱动器 - 运行该任务的第二个会话具有完全不同的环境,但 Windows 足以为所有会话自动映射 C:(和其他物理驱动器)。
使用 PowerShell 时,您不需要将映射映射到驱动器,这可能只是为了方便。 与 cmd.exe 的前身不同,PowerShell 非常乐意将当前目录更改为 UNC 样式路径:
cd \\server\share\directory
是否可以在不映射驱动器的情况下完成您需要的操作? 您提到了复制文件 - 如果任务使用您的凭据运行,并假设您拥有 Q: 驱动器的权限(比方说 \\server\\share),那么您的脚本应该能够执行以下操作:
copy c:\logs\*.log \\server\share\logs
无需映射驱动器即可正常工作。
这是我的测试的完整命令信息。 如果您的环境不同,请注意如何。 该任务配置为作为我的域帐户运行,仅当我登录时,具有最高权限并为 Windows 7/Server 2008 R2 配置。
动作是启动一个程序:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
参数
-command copy c:\logs\*.log \\server\share\logs
也许在脚本中运行 get-psdrive 之前,首先做这样的事情:
$net = new-object -comobject Wscript.Network
$net.mapnetworkdrive("Q:","\\path\to\share",0,"domain\user","password")
完成工作后(复制文件..):
$net.removenetworkdrive("Q:")
如果您不想在脚本中使用密码,则有一个 hack,我更愿意避免:
以管理员身份打开 powershell 并创建从 UNC 到本地路径的符号链接
New-Item -ItemType SymbolicLink -Path "C:\\LocalTemp\\" -Value "\\unc\u0026quot;
您现在可以直接在 powershell 脚本中使用 UNC 路径,它将使用计划任务中提供的凭据打开它。
计划任务中的凭据可能存在一些问题,但是在我看来,这仍然比脚本中明文或伪混淆的密码要好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.