无法在空值表达式上调用方法

时间:2017-11-20 15:15:54

标签: powershell powershell-v4.0

我有一个脚本,在目录中查找* .bak文件,并将文件移动到基​​于日期重命名目标目录的备份目录。

在1个环境中,一切都按预期工作,另一个则在设置变量时失败并且“无法在空值表达式上调用方法”。完全相同的PS 4.0版本在两种环境中都运行。

#include <iostream>

using namespace std;

int main()
{
    //setting values for the items and characters
    {
        int player;
        int healthvalue = 100;
        int sword;
        int enemy1;
        int enemy2;
        std::cout << "Hello player! Welcome to the game!\n\t";
    }
    {
        std::cout << "You wake up in confusion, your whereabouts are unknown.\n"
                  << std::endl;

        std::cout << "A band of goblins approachs you from the distant horizon.\n\t" << std::endl;
        std::cout << "Do you draw your sword and stand your ground?\n";
        cin >> yes, no;
        if (true) {
        }
    }
}

如果存在.bak文件$SourceDir = "D:\APPS\Logs" $DestinationDir = "D:\APPS\ServerLog_Archives\" $files = get-childitem -path $SourceDir -Filter *.bak $Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + "\" + $file.CreationTime.Date.ToString('dd-MMM') 则返回以下内容,否则该变量将返回NULL。

    Directory: D:\APPS\Logs


Mode                LastWriteTime     Length Name                                                                                                                                   
----                -------------     ------ ----                                                                                                                                   
-a---        2017-08-25   6:38 PM     100068 jfserver5.bak                                                                                                                          
-a---        2017-08-25   6:38 PM     100068 jfserver6.bak     

在1个环境中$files返回目标目录,无论$Directory是否为NULL或返回了什么内容。

D:\APPS\ServerLog_Archives\2017\20-Nov

在其他环境中,我收到错误:

You cannot call a method on a null-valued expression.
At line:6 char:1
+ $Directory = $DestinationDir + "" + $file.CreationTime.Date.ToString('yyyy') + " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

为什么这会在1个环境中运行而不是另一个运行相同版本的PS?也许有更好的方法来做到这一点,任何建议都将受到高度赞赏。

0 个答案:

没有答案