【问题标题】:Running a Powershell script from Task Scheduler从任务计划程序运行 Powershell 脚本
【发布时间】:2020-08-07 16:46:40
【问题描述】:

我需要从在线 SharePoint 的任务计划程序运行 PowerShell 脚本。脚本:

  1. https://xxx.sharePoint.com/site/ggg 获取文档版本。
  2. 输出到本地驱动器上的 .csv 文件。
  3. 访问 https://xxx-admin.sharepoint.com 将 CSV 文件发布到 xxx.Sharepoint.com/site/aaaa。

该脚本在 PowerShell 中完美运行。我无法让它从我的机器上运行。 C:/上没有错误信息或输出文件。

这个脚本可以在我的本地机器上运行吗?

【问题讨论】:

  • 你是说它在你的机器上以交互方式运行,但它不在你机器上的任务调度程序中运行?请尽量具体,因为我们看不到您看到的内容
  • 它在我的机器上以交互方式运行,生成报告,输出到 .csv,将 .csv 添加到 c:\,然后在线上传到 SharePoint。当我尝试从任务计划程序运行时,没有错误也没有输出。
  • 任务调度程序日志说什么?它运行多长时间?问题通常是它在权限不足的帐户下运行
  • 谢谢尼克。在 C:\Windows\System32\winevt\Logs 找到日志文件,最近的日志是:引擎状态从无更改为可用。详细信息:NewEngineState=Available PreviousEngineState=None SequenceNumber=13 HostName=ConsoleHost HostVersion=5.1.18362.752 HostId=c12140e9-de5d-4ea5-8f9d-500fc66d8d23 HostApplication=Powershell.exe -ExecutionPolicy Bypass C:\x\xx\xx\x\VersionHistory .ps1 EngineVersion=5.1.18362.752 RunspaceId=6232fc05-7e9b-4a1a-9870-2b579f7c1373 PipelineId= CommandName= CommandType= ScriptName= CommandPath= CommandLine=
  • 运行需要几秒钟。我能够在 SharePoint Online 命令行管理程序中运行它 - (以管理员身份运行 ISE)。权限是否会限制脚本运行报告或将文件上传到 SharePoint?

标签: powershell scheduled-tasks sharepoint-online


【解决方案1】:

不太确定如何运行它,但要回答您的问题:是的,如果您安装了 PowerShell 和所有必要的库,它可以。如果您还没有设置执行策略,您可能需要设置执行策略,并使用具有足够权限的用户运行脚本。

检查以下问题和回答: How to run a PowerShell script

【讨论】:

    【解决方案2】:

    要运行 PowerShell 脚本,您需要执行以下两项操作之一。将执行策略更改为“RemoteSigned”(必须在此机器上创建脚本)或“Unrestricted”(不推荐),因为默认情况下它设置为“Restricted”,不会运行任何脚本。第二个选项忽略执行策略。开始你打开\编辑你的原始powershell脚本并用这个语法封装它“powershell -ExecutionPolicy ByPass { script code goes here }”另外,如果你想看看当你运行计划任务然后您需要添加此参数“-NoExit”。控制台关闭的原因是,默认情况下,计划任务在后台控制台中运行脚本,然后立即关闭,您需要“-NoExit”命令使其保持打开状态。但是,如果您保留“-NoExit”参数,那么每次任务运行时它将保持打开所有这些控制台。因此,当您确定脚本运行成功且没有错误时,请务必将其删除。

    封装脚本语法示例:

    powershell -ExecutionPolicy ByPass {
    
       # Original script code here
    }
    
    

    使控制台不关闭语法示例的封装脚本:

    powershell -ExecutionPolicy ByPass -NoExit {
    
       # Original script code here
    }
    
    

    创建计划任务:

    1. “Windows 键 + R” 打开任务计划程序,这将打开运行对话框并在“打开”文本框中键入“taskschd.msc”

    2. 单击“创建任务”,然后在“名称”字段中输入您要为此任务指定的名称。然后确定您要使用的安全选项,以管理员身份运行使用“以最高权限运行”选项。

    3. 点击“触发器”标签,然后点击“新建”。在这里,您可以通过从下拉列表中选择开始任务的方式,默认情况下选择按计划进行。然后您选择所需的频率、时间和其他高级设置。

    4. 点击“操作”标签,然后点击“新建”,对于操作在下拉菜单中保留为“启动程序”强>。在“程序/脚本”文本框中输入“powershell.exe”并在“添加参数(选项)”字段中输入-File“FULL FILE PATH” em> 并添加左引号和右引号。例如:-File "C:\Users\Public\Documents"

    5. 单击“条件”选项卡并保留大部分默认值或选择其他条件。

    6. 单击“设置” 选项卡,通常默认设置即可,但您可以根据需要选择其他设置。

    https://blog.netwrix.com/2018/07/03/how-to-automate-powershell-scripts-with-task-scheduler/

    【讨论】:

    • 谢谢拉里,很好的指导。脚本已更新,但仍然没有输出,如果有帮助,这里是我在 GitHub 中的代码的链接。github.com/wishmouse/PowerShell/blob/master/Stackoverflow
    • 您如何运行脚本(ISE、PS 控制台或任务计划程序)?您是否有权写入 C:\ 和 SharePoint 网站?可以看源码吗?
    • 源代码在这里:github.com/wishmouse/PowerShell/blob/master/Stackoverflow 我在 SharePoint Online 命令行管理程序中创建/运行脚本 - (以管理员身份运行 ISE)并希望使其成为使用任务计划程序计划任务。输出为 c:/users/[ me ]/documents/NRG/VersionHistory.csv
    • 感谢您提供源代码链接。我认为这可能是一个访问问题,因为 Windows 出于安全原因将配置文件分开,并且其他配置文件(用户)需要被授予权限。当 PS 控制台以管理员身份启动时,它会在管理员配置文件下打开。我将以管理员身份启动 PowerShell 控制台并运行此命令 Test-Path -Path C:\Users\wishmouse\Documents\NRG\ 以确保您获得返回的真实值。另外,我注意到在代码中没有对任何硬编码文件路径进行“测试路径”,我也会手动测试它们。
    • 第一个路径变成了假。修改如下,得到如下: 访问路径: PS C:\WINDOWS\system32> Test-Path -Path C:\Users\versionhistory\ True 访问路径中的文件: PS C:\WINDOWS\system32> Test-Path -Path C:\Users\versionhistory\versionhistory.ps1 False
    猜你喜欢
    • 2019-05-08
    • 2019-10-31
    • 2015-07-22
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2020-07-13
    • 2017-08-01
    相关资源
    最近更新 更多