首先,我只是粘贴$PSVersionTable.PSVersion
的结果,显然,它显示了powershell的版本......
You are now entering PowerShell : <name>
PS D:\aDirectory> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
下面我有一个函数DoSomeSqlForMe
,它定义了两个参数$sql
和$logFile
。
调用函数时,会将$sql
传递给它。 $logFile
继承自父脚本(但也可以传入)。
function DoSomeSqlForMe
{
param
(
[string]$sql,
[string]$logFile
)
#Do some stuff with $sql and $logfile
}
EDIT - 函数被调用如下(这是直接复制+对同一函数的其他调用的典型):
DoSomeSqlForMe $sql
我的问题是当$logFile
被设置为参数但是在调用方法时没有传入($logFile
仍然可用作继承的var)我得到
Exception message : The argument is null or empty.
然而,当我简单地删除$ logFile作为参数时,我的日志文件中充满了看起来像我(在东方语言中未受过教育)的内容,如普通话 - 渮浡
一遍又一遍地重复。
有什么想法吗?
答案 0 :(得分:1)
问题是,如果您在调用函数时未提供$logFile
参数(例如DoSomeSqlForMe $arbitrarySql
),则默认情况下$null
会被分配到$logFile
参数。要将之前定义的$logFile
变量默认分配给函数参数,您必须按如下方式调整函数。
function DoSomeSqlForMe
{
param
(
[string]$sql,
[string]$logFile = $logFile
)
#Do some stuff with $sql and $logfile
}
但我建议用两个参数调用你的函数(即DoSomeSqlForMe -sql $arbitrarySql -logFile $logFile
)