powershell - POWERSHELL 任务计划程序在 -Argument 内部传递变量
问题描述
下午好,我对 Powershell 很陌生,正在努力实现以下目标:
遍历文件夹目录
将文件夹名称设置为变量
创建任务
将变量(在步骤 2 中声明)作为在任务操作中调用的 -File 的必需参数传递
Get-ChildItem -Path C:\Users\Paul\Documents\RSYNC -Directory -Recurse |ForEach-Object { $FolderName = $_.name $taskName = 'My Powershell Task_' + $FolderName # Create Action $Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File "C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1" -name "$FolderName"' # Create Trigger $Trigger = New-ScheduledTaskTrigger -Daily -At 12:35am # Create Settings $Settings = New-ScheduledTaskSettingsSet # Create Task $Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings # Register Task Register-ScheduledTask -TaskName $taskName -InputObject $Task -User 'username' -Password 'password' }
任务是根据需要创建的,但是,问题是在$Action步骤中,不是在 $FolderName 变量中传递文件夹名称,而是将 $FolderName 作为字符串传递(我希望这是有道理的)。
如何正确地将文件夹名称传递给被调用的 PowerShell 脚本?
解决方案
您的直接问题是期望在逐字PowerShell 字符串文字
$FolderName
中扩展(插值)对变量的引用, :'...'
虽然交换引号的使用 -用于
"..."
外部引用和嵌入引用以获得插值可能会根据情况工作 - 取决于目标程序或 API - 它在任务调度程序的上下文中不起作用。'...'
对于任务计划程序中的命令行- 通常在 Windows 上来自 PowerShell 之外 - 您也必须对嵌入的字符串使用
"..."
引号,因此需要转义"
为`"
(""
也可以使用)。原因是当从外部调用其CLI时, PowerShell 不会将
'
字符视为具有语法功能,例如从任务计划程序cmd.exe
,或 Windows 运行对话框 ( WinKey-R)。例如,如果传递给的路径-File
是'C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1'
,'
字符。将被解释为路径的一部分。
具体来说:
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument `
"-File `"C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1`" -name `"$FolderName`""
请注意,您可以使用可扩展的here-string来简化引用;嵌入的"
则不需要转义:
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument @"
-File "C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1" -name "$FolderName"
"@
推荐阅读
- numpy - 在 x 和 y 值上使用不同大小的数组喂养 pyplot
- sql-server - 如何在 asp.net 核心中工作并将新表添加到数据库第一个模型?
- javascript - 访问 Promise.then() 中的拖放对象?
- python - 每次代码运行时如何保存数据并附加到它
- ios - 将数据从 UIViewController 传递到 UITabBarController 始终为零
- flutter - 是否可以在飞镖中动态设置方法的返回类型
- python - 在 Android Studio 中使用 Chaquopy 将值插入到 python 文件中
- vba - 从抓取的表格中提取单元格值的最有效方法
- c# - 是否可以在 HwndHost 中托管 WPF 页面?
- chart.js - 如何在工具提示回调afterBody中将逗号分隔的字符串分成新行?