我有一个困扰我的问题。
我想使用命名参数自动执行Powershell脚本,但要在另一个Powershell脚本(将充当脚本守护程序)中执行该脚本。
例如:
被调用的脚本之一具有此参数
param(
[int]$version,
[string]$user,
[string]$pass,
[string]$domain,
)
现在,powershell脚本恶魔会像这样加载文件和参数
$argumentsFromScript = [System.IO.File]::ReadAllText("C:\params.txt") $job = Start-Job { & "ps1file" $arguments}
params.txt包含这样的数据
-versionInfo 2012 -user admin -pass admin -domain Workgrup
但是,当我尝试执行此代码时,显然整个$ argumentsFromScript变量将被视为参数1(版本),并且我最终遇到错误,无法将“ -versionInfo 2012 -user admin -pass admin -domain Workgrup”转换为Int32 ...
你们知道我如何完成这项任务吗?Powershell守护程序对参数一无所知。他只需要使用给定的命名参数执行脚本即可。params.txt只是一个示例。任何其他文件(csv,ps1,xml等)都可以,我只想自动获取传递给脚本的命名参数。
预先感谢您的任何帮助或建议。
试试这个:
@'
param ([string]$logname,[int]$newest)
get-eventlog -LogName $logname -Newest $newest
'@ | sc c:\testfiles\testscript.ps1
'-logname:application -newest:10' | sc c:\testfiles\params.txt
$script = 'c:\testfiles\testscript.ps1'
$arguments = 'c:\testfiles\params.txt'
$sb = [scriptblock]::Create("$script $(get-content $argumentlist)")
Start-Job -ScriptBlock $sb
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句