当 Taskscheduler 执行时,Powershell 从机器获取文件不起作用
Powershell get files from machine doesn't work when executed by Taskscheduler
我有一台机器,我应该从中读取日志数据。数据位于 192.168.1.151/traceability。
我写了一个小脚本,应该能够 return 文件。当我手动启动它时它确实有效。但是当我使用 Windows Task Scheduler 执行它时,它无法获取文件:
$WinAPI = @"
public class WinAPI
{
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet =
System.Runtime.InteropServices.CharSet.Auto)]
public static extern void OutputDebugString(string message);
}
"@
$Path = "\192.168.1.151\traceability"
$items = get-childitem -Path $Path
[WinAPI]::OutputDebugString($items.Length);
$items.Length在Task Scheduler执行时为0,手动执行时为3。
该任务设置为 运行,对管理员帐户具有完全权限(成功测试脚本的同一帐户)。
我还尝试将路径映射到 Z: 并改用 $Path = "Z:\"
但这无助于解决问题。
是我做错了什么,还是无法使用 Powershell 获取文件。
我通过在 Powershell 脚本中进行映射解决了问题:
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("p:", $Path, $false, "user", "password")
管理员用户可以通过这种方式访问文件。
我有一台机器,我应该从中读取日志数据。数据位于 192.168.1.151/traceability。 我写了一个小脚本,应该能够 return 文件。当我手动启动它时它确实有效。但是当我使用 Windows Task Scheduler 执行它时,它无法获取文件:
$WinAPI = @"
public class WinAPI
{
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet =
System.Runtime.InteropServices.CharSet.Auto)]
public static extern void OutputDebugString(string message);
}
"@
$Path = "\192.168.1.151\traceability"
$items = get-childitem -Path $Path
[WinAPI]::OutputDebugString($items.Length);
$items.Length在Task Scheduler执行时为0,手动执行时为3。
该任务设置为 运行,对管理员帐户具有完全权限(成功测试脚本的同一帐户)。
我还尝试将路径映射到 Z: 并改用 $Path = "Z:\"
但这无助于解决问题。
是我做错了什么,还是无法使用 Powershell 获取文件。
我通过在 Powershell 脚本中进行映射解决了问题:
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("p:", $Path, $false, "user", "password")
管理员用户可以通过这种方式访问文件。