{"id":325,"date":"2026-05-31T21:04:12","date_gmt":"2026-05-31T19:04:12","guid":{"rendered":"https:\/\/34.75.207.203\/?p=325"},"modified":"2026-05-31T21:12:33","modified_gmt":"2026-05-31T19:12:33","slug":"sftp-scheduled-task-toolset-first-repo-on-github","status":"publish","type":"post","link":"https:\/\/tillnet.se\/?p=325","title":{"rendered":"Sftp-Scheduled-Task-Toolset (first repo on Github)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">First ever repo committed to Github. After troubleshooting Powershell scripts that upload and download with sftp as scheduled tasks over the years I decided to put together a toolset that would make creating and maintaining these scripts\/tasks a lot easier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/tobiastillstam\/Sftp-Scheduled-Task-Toolset\">https:\/\/github.com\/tobiastillstam\/Sftp-Scheduled-Task-Toolset<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A PowerShell toolset for unattended SFTP file transfers on Windows, run as scheduled tasks. Includes a WinForms GUI for creating and managing transfer jobs.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Built around the&nbsp;<a href=\"https:\/\/winscp.net\/\">WinSCP<\/a>&nbsp;.NET assembly. Designed for sysadmins who need reliable scheduled SFTP transfers (downloads, uploads with local archive, or both), without writing a one-off script per server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Features<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bidirectional transfer<\/strong>&nbsp;\u2014 download from or upload to an SFTP server.<\/li>\n\n\n\n<li><strong>Four authentication modes:<\/strong>\n<ul class=\"wp-block-list\">\n<li>DPAPI-encrypted credential file (default).<\/li>\n\n\n\n<li>Clear-text JSON config (ACL-restricted; for cross-account or SYSTEM use).<\/li>\n\n\n\n<li>SSH private key (<code>.ppk<\/code>).<\/li>\n\n\n\n<li>Direct PSCredential (for interactive testing).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Run as the current user or SYSTEM<\/strong>, with safety checks for incompatible combinations.<\/li>\n\n\n\n<li><strong>Per-task credentials and logs<\/strong>&nbsp;\u2014 each task gets its own files, named after the task, so multiple tasks never clash.<\/li>\n\n\n\n<li><strong>GUI front-end<\/strong>&nbsp;with Create and Manage tabs (list, run, edit-in-place, remove).<\/li>\n\n\n\n<li><strong>Email alerts<\/strong>&nbsp;on failure (or partial failure) via an unauthenticated SMTP relay.<\/li>\n\n\n\n<li><strong>WhatIf\/Confirm support<\/strong>, host-key fingerprint scanning, configurable log retention.<\/li>\n\n\n\n<li><strong>Pure-ASCII source<\/strong>&nbsp;\u2014 no encoding gotchas with PowerShell 5.1.<a href=\"https:\/\/github.com\/tobiastillstam\/Sftp-Scheduled-Task-Toolset?tab=readme-ov-file#features\"><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>First ever repo committed to Github. After troubleshooting Powershell scripts that upload and download with sftp as scheduled tasks over the years I decided to &hellip;<\/p>\n","protected":false},"author":1,"featured_media":326,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it"],"jetpack_featured_media_url":"https:\/\/tillnet.se\/wp-content\/uploads\/2026\/05\/gui-create-e1780254687939.png","_links":{"self":[{"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/posts\/325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tillnet.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325"}],"version-history":[{"count":5,"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/posts\/325\/revisions"}],"predecessor-version":[{"id":334,"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/posts\/325\/revisions\/334"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tillnet.se\/index.php?rest_route=\/wp\/v2\/media\/326"}],"wp:attachment":[{"href":"https:\/\/tillnet.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tillnet.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tillnet.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}