我有一个 PowerShell 脚本,可以在直接输入 PowerShell 时使用。PowerShell 程序使用以下快捷方式运行:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"
我在 Windows 任务计划程序中尝试了大约 10 种不同的方法来首先打开上面的快捷方式,然后运行我保存的脚本文件,但它不起作用。它挂在“正在运行”上。
该脚本位于此处:
Z:\Exchange PowerShell\MailboxesApproachingOverQuota.ps1
请注意,可以将脚本内容复制并粘贴到上面的 PowerShell 快捷方式中,它运行得非常好,并将输出通过电子邮件发送给我。
请注意,我使用的 PowerShell 实例来自上面显示的快捷方式,其中已经有参数 - 因此我很难在任务计划程序中放置什么。
请问有什么帮助吗?
谢谢 :)
编辑当我直接在 CMD 中使用以下内容时:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
我得到: http ://tinypic.com/r/n1fkmg/8
当我使用以下内容时:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
我得到:http ://tinypic.com/r/5bbac9/8
运行这个:
powershell -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -exec bypass -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"
正常打开 Exchange 命令行管理程序:http: //tinypic.com/r/2dglulf/8
我猜这个脚本没有签名。您是否使用
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
cmdlet 启用了未签名脚本的执行?首先,让我告诉您如何从任务运行脚本:
另请注意,您用于运行脚本的用户 ID 可能需要在本地服务器上被授予权限。
更新:删除 -noexit
我遇到了同样的问题,发现最简单的方法是通过 bat 文件调用命令。我可以从命令行运行整个命令,但如果我尝试使用计划任务,无论我做什么,它都不会工作。
单行批处理文件修复了它。
我在我的 PS 脚本中设置了成绩单,这样我就可以查看它是否完成以及它运行了哪些命令。我还运行了 get-mailboxparmission -identity username:\calendar 以确认更改已反映。
干杯
皮特
简单的脚本文件通过任务调度程序工作。当我使用
-Sendmail:$true
参数时,这是有效的。我创建了一个.bat
文件,并在任务计划程序中运行该文件而不是 Powershell 脚本。此.bat
文件适用于我的 Exchange 2016。