Windows Powershell ISE刚刚运行第一行函数调用命令ScriptBlock

时间:2017-03-27 02:34:11

标签: powershell

这是我的代码段:

$s = New-PSSession -ComputerName dafwkn409c6c9 -Credential $mycreds


function Foo (){
    Get-ChildItem C:\
    Get-ChildItem d:\ 
}

function Foo1 (){
    Get-ChildItem d:\ 
}

Invoke-Command  -Session $s -ScriptBlock ${function:Foo}
Invoke-Command  -Session $s -ScriptBlock ${function:Foo1}

功能Foo有2条线。 Foo1有1行。

但是当我将我的代码交给我的朋友,或者我在服务器上运行我的代码时,函数Foo会运行所有行。

这恰好发生在我的电脑上,我的foo功能只是跑到第一线。

请建议我的powershell ISE的修复地点。

samplecode

version

为什么我的函数foo的最后一个代码没有被调用? secondline

我的DotNet 4.5说不, dotnet

但是当我安装dotnet 4.5时,此对话框会显示

dotnet45

1 个答案:

答案 0 :(得分:1)

最后我将我的PS版更新到版本5.1

这是因为我猜5.0 bug's。那篇文章说:

  • v5是预览版。它没有完成,并且不保证无错误。它 在正式生产之前不应该安装在生产计算机上 释放。
  • v5不会与v3或v4“并排”安装。你不能 用“-version 3”运行它以“降级”。现在,v5不应该破坏 任何东西 - 在v3或v4中运行的东西应该仍能正常工作 - 但没有保证,因为它是预览而不是发布的代码 在这个阶段。
  • 服务器软件(Exchange,SharePoint等)经常有 对特定版本的PowerShell的硬依赖性。你需要 在安装v5之前先研究一下。
  • 安装v5之后,你可能会 无法干净地卸载并恢复到以前的版本。

重点是:

  

一般来说,v5应该安装在测试虚拟机中   至少,不在生产计算机上。玩的很棒   有了它,你应该绝对记录错误和建议   http://connect.microsoft.com

当我运行这段代码时:

$s = New-PSSession -ComputerName dafwkn409c6c9 -Credential $mycreds

function Foo (){
    Get-ChildItem C:\
    Get-ChildItem d:\ 
}

Invoke-Command  -Session $s -ScriptBlock ${function:Foo}

功能上的所有代码都运行良好。

请使用Powershell 5.0 提防