【发布时间】:2015-09-21 10:01:24
【问题描述】:
我有一个 Powershell 脚本,它以字符串形式获取计算机名称,以 json 数组形式获取在其上运行的进程,从变量创建参数,然后向 url 发出 Web 请求,并通过 POST 方法发送 2 个参数如下图:
$comp_id = (Get-WmiObject win32_operatingsystem) | Select-Object csname | Format-Table -HideTableHeaders | out-string
$processes = get-process | Where-Object {$_.StartTime -ne $null -and $_.MainWindowTitle.Length -gt 10} | Select-Object id,description,FileVersion,mainWindowTitle,startTime| ConvertTo-Json
# create parameters from variables
$param1= @{id=$comp_id}
$param2 = @{data=$processes} #the variable $process is a JSON array string
$bothParams = $param1+$param2
Invoke-WebRequest -Uri http://my.webserver.comp:8080/galileo/peeker -Method POST-Body $bothParams
当我直接运行脚本时一切正常,即两个参数值都可以从 servlet 访问。
我想将此脚本作为计划任务运行,因此我创建了一个调用 powershell 脚本的批处理脚本文件。问题是当脚本作为计划任务运行时,第二个参数,应该是一个JSON数组字符串,是空的。可能是什么问题?
我的批处理脚本有以下两行:
@echo OFF
# used batch script tag(%~dpn0) to get path (p) and file name similar to this file
Powershell.exe -Command "& '%~dpn0.ps1'"
【问题讨论】:
-
我猜是路径问题;分享你的批处理脚本;
-
如何将任何内容分配给
$comp_id和$processes? -
嗨。我编辑了问题以包括从批处理文件进行的调用以及
$comp_id和$process如何获取它们的值。希望现在更清楚.. -
任务计划程序使用哪个帐户运行脚本?
-
我正在使用普通用户帐户运行脚本,已设置为使用最高权限运行,并且所有脚本的 Powershell 都设置为“无限制”模式。
标签: powershell batch-file