【发布时间】:2014-01-01 17:43:39
【问题描述】:
我有一个监控图像文件夹的 PowerShell 脚本。我需要想办法在电脑启动后自动运行这个脚本。
我已经尝试了以下方法,但无法正常工作。
使用
msconfig并将 PowerShell 脚本添加到启动,但我在该列表中找不到 PowerShell 脚本。-
创建一个快捷方式并将其放到启动文件夹中。没有运气。
%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -File "C:\Doc\Files\FileMonitor.ps1"或
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File "C:\Doc\Files\FileMonitor.ps1"这是我的 PowerShell 脚本:
$folder = "C:\\Doc\\Files" $dest = "C:\\Doc\\Files\\images" $filter = "*.jpg" $fsw = new-object System.IO.FileSystemWatcher $folder, $filter -Property @{ IncludeSubDirectories=$false NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite' } $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { Start-Sleep -s 10 Move-Item -Path C:\Doc\Files\*.jpg C:\Doc\Files\images } -
我还尝试使用
taskschd.msc添加一个基本任务。还是不行。这是我发现的,也许这将有助于调试它。
如果我打开一个 PowerShell 窗口并在那里运行脚本,它就可以工作。但是如果我在命令提示符下运行它,
powershell.exe -File "C:\Doc\Files\FileMonitor.ps1"它不会起作用。我不确定这是权限问题还是其他问题。
顺便说一句,我安装了 PowerShell 3.0,如果我输入 $host.version,它将在那里显示 3。但是我的powershell.exe好像还是v1.0。
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
【问题讨论】:
-
v1.0 powershell.exe 是 v3。 MSFT 只是懒于将文件移动到新文件夹的新版本。即 x64 上的 System32 是 x64 而 syswow64 是 32 位。
-
你真的需要把前几行 'c:\\doc\\files' 加倍吗,为什么不用 c:\doc\files 呢?
-
你是不是偶然在超级用户上重复发帖?
标签: powershell