微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Powershell中的foreach和scriptblock中增加

如何解决在Powershell中的foreach和scriptblock中增加

我希望有人能发现错误

这是较大脚本中的一个函数

我希望它在每次迭代$i时递增foreach,但是我无法使其正常工作。如果仅运行$i++所在的行,它将增加。 消息已到达用户,因此可以正常工作,只是忽略了$i++

$i = 0

function Message {

    start-job -Name Col01 -InitializationScript{Import-Module RemoteDesktop} -ScriptBlock{$Users = Get-RDUserSession -Connectionbroker $ActiveConnectionbroker -CollectionName "col01"

    foreach ($User in $Users) {

        Send-RDUserMessage -UnifiedSessionID $User.UnifiedSessionId -HostServer $User.HostServer -MessageTitle "Info" -MessageBody $using:message

        $i++
    }
}

解决方法

您有两个名称相同的变量“ $ i”。

其中一个是全局的,第二个是局部的。

下面是一个示例,该示例显示了正在发生的事情以及如何从函数内部更改全局变量(当您指定范围限定符时):

$i = 777

Write-Output "outside i: $i"

function do_something {

    $i=41
    for( $z=0 ; $z -lt 10 ; $z++ ){
      $global:i++
      $i++
      Write-Output "inside i: $i $global:i"
    }

}


do_something

Write-Output "i: $i"

这是由上述代码产生的输出

outside i: 777
inside i: 42 778
inside i: 43 779
inside i: 44 780
inside i: 45 781
inside i: 46 782
inside i: 47 783
inside i: 48 784
inside i: 49 785
inside i: 50 786
inside i: 51 787
outside i: 787

看看documentation about scopes

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?