代码之家  ›  专栏  ›  技术社区  ›  Ben

调用WmiMethod-ArgumentList不接受变量?

  •  1
  • Ben  · 技术社区  · 7 年前

    所以我对Powershell非常陌生,我几乎可以肯定,我所做的并不是最有效的方式。但我真的想知道为什么我现在做的不管用。

        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        Invoke-WmiMethod -Namespace "Root\CCM" -Class SMS_Client -Name 
        TriggerSchedule -ArgumentList "{00000000-0000-0000-0000-000000000042}"
        } 
    

    这个很好。但我希望能够调用一个变量或其他所有这些长代码都在其中的东西,而不是每次我想要更改客户端操作时都必须将它们放入其中。这就是我开始到处玩的地方,我什么都没做。

        $ApplicationDeployment = '"{00000000-0000-0000-0000000000000042}"'
    
        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        Invoke-WmiMethod -Namespace "Root\CCM" -Class SMS_Client -Name 
        TriggerSchedule -ArgumentList $ApplicationDeployment
        } 
    

    这给了我一个错误。我还尝试了以下方法:

        $hash = @{"ApplicationDeployment" = "{00000000-0000-0000-0000-000000000042}"}
    
        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        Invoke-WmiMethod -Namespace "Root\CCM" -Class SMS_Client -Name 
        TriggerSchedule -ArgumentList $hash.'ApplicationDeployment'
        } 
    

    最后

        $Object = @{ApplicationDeployment = '{00000000-0000-0000-0000-000000000042}'}
    
        Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        Invoke-WmiMethod -Namespace "Root\CCM" -Class SMS_Client -Name 
        TriggerSchedule -ArgumentList $Object.ApplicationDeployment
        }
    

       $($ApplicationDeployment).ArgumentList 
    

    但这会产生与其他错误相同的错误。

    1 回复  |  直到 7 年前
        1
  •  2
  •   vte    7 年前

    您的问题是远程机器没有在本地初始化变量。在执行脚本时,需要将其传递给远程机器。

    $Object = @{ApplicationDeployment = '{00000000-0000-0000-0000-000000000042}'}
    
    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        Invoke-WmiMethod -Namespace "Root\CCM" -Class SMS_Client -Name TriggerSchedule -ArgumentList $Using:Object.ApplicationDeployment
    }