方法调用失败...不包含名为“op_Addition”的方法

时间:2018-02-27 22:47:31

标签: powershell

我有一个headscratcher,我有一个powershell脚本引用另一个。在这个脚本的顶部,我有参考,

. $PSScriptRoot\bin\functions.ps1

这会引发错误,

方法调用失败,因为[System.IO.DirectoryInfo]不包含名为“op_Addition”的方法。 在.... \ bin \ functions.ps1:5 char:1 + $ LogPath = $ ParentDirectory +'\ InstallLog_'+ $ CurrentDate +'。txt' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~     + CategoryInfo:InvalidOperation:(op_Addition:String)[],RuntimeException     + FullyQualifiedErrorId:MethodNotFound

我无法弄清楚为什么会这样。这是第二个文件的前5行中的代码。问题在于$ Logs赋值。

$invocation = (Get-Variable MyInvocation).Value
$CurrentDate = Get-Date -format "yyyy_MM_dd_hhmmss"
$CurrentDirectory = Split-Path $invocation.MyCommand.Path
$ParentDirectory = (get-item $CurrentDirectory).parent
$LogPath = $ParentDirectory + '\InstallLog_' + $CurrentDate + '.txt'

如果我在$ Logs变量中硬编码路径,那很好。 如果我使用变量$ CurrentDirectory而不是$ ParentDirectory,那就好了。

如果使用$ ParentDirectory失败或使用$ Logs行中的语句。我不认为我所做的事情很复杂,也没有别人没做过的事情。是否有一些我不知道的细微差别?

谢谢,

1 个答案:

答案 0 :(得分:1)

我在发布之后发现,当你使用get-item时,你没有得到一个字符串,你得到一个对象。

错误被抛出,因为我试图将一个对象与另一个字符串连接起来。我需要使用以下内容,

$ParentDirectory = (get-item $PSScriptRoot).parent
$LogPath = $ParentDirectory.FullName + '\logs\InstallLog_' + $CurrentDate + '.txt'