从命令行运行时,简单的PowerShell脚本拒绝写入文件,但在ISE中工作正常

时间:2015-05-29 00:19:36

标签: powershell

所以我有一个非常简单的PowerShell脚本,用于在构建期间更新版本号。

var _group   = dateDim.group().reduceSum(function(d) {return d.revenue;});
var group = {
all:function () {
var g = [];
_group.all().forEach(function(d,i) {
    var cumulate = 0;
    var monthcount =0;
    var dt =new Date( d.key);
    var ct =  new Date(d.key);
    ct.setFullYear(ct.getUTCFullYear() -1);
    _group.all().forEach(function(d2,i) {
        var dt2 = new Date(d2.key);
        if(dt2 <= dt && dt2 > ct){
            cumulate += d2.value;
            monthcount++; 
        }
    })
    if(monthcount>=11){
        console.log( ' Dt ' + dt + ' ' + cumulate + ' months ' + monthcount); 
        g.push({key:d.key,value:cumulate})
        }
    });
                return g;
            }
        }; 

它在ISE中完全正常,但是当我从命令行运行

  

powershell.exe -Command - &lt; powershell2447437064467034590.ps1

  

powershell.exe -NoProfile -NonInteractive -ExecutionPolicy ByPass   -Command - &lt; powershell2447437064467034590.ps1

所有这些确实是空白的文件。如何从ISE中工作,而不是从命令行工作?

2 个答案:

答案 0 :(得分:1)

&#34;默认情况下,Windows Powershell不会从当前位置加载命令。如果您信任此命令,请键入&#34;。\ test.ps1&#34;

-Windows Powershell

powershell.exe .\powershell2447437064467034590.ps1

我使用Powershell命令提示符和经典命令提示符

进行了测试

了解更多信息

从提升的脚本或命令Powershell 3.0

运行
Update-Help
Get-help about_Command_Precedence

答案 1 :(得分:1)

我明白了。我在文件中使用了标签来打印和格式化文本。显然打破了它。如果我复制并将其复制到ISE中,它会默默地将所有选项卡转换为空格,这就是它在那里工作的原因。非常令人惊讶的是,标记器并没有对所有空格进行相同的处理。