gpt4 book ai didi

Powershell:如何创建自定义对象并将其传递给Powershell中的函数?

转载 作者:行者123 更新时间:2023-12-02 22:26:14 25 4
gpt4 key购买 nike

我想在PowerShell中创建一个具有属性的自定义对象,然后将该对象传递给函数。我找到了创建自定义对象的在线示例,但是使用了HashTable。但是,我只有一个具有属性的对象,而不是一个对象数组。

  • 如果可能,我想创建一个对象而不是
    哈希表。
  • 如果要使用HashTables,我该如何检索
    对象并将其传递给函数?

  • 以下是我的代码示例:
    function CreateObject()
    {
    $properties = @{
    'TargetServer' = “ServerName”;
    'ScriptPath' = “SomePath”;
    'ServiceName' = "ServiceName"
    }

    $obj = New-Object -TypeName PSObject -Property $properties

    Write-Output $obj.TargetServer
    Write-Output $obj.ScriptPath
    Write-Output $obj.ServiceName

    return $obj
    }

    function Function2([PSObject] $obj)
    {
    Do something here with $obj
    }


    $myObj = CreateObject

    Function2 $myObj

    编辑1
    谢谢@Frode和@Matt。我不知道'return'语句也会返回其他结果。请问下面的工作吗?
    function CreateObject()
    {
    return New-Object -TypeName PSObject -Property @{
    'TargetServer' = "ServerName"
    'ScriptPath' = "SomePath"
    'ServiceName' = "ServiceName"
    }
    }

    function Init()
    {
    // Do something here

    $myObject = CreateObject()

    // Do something here with $myObject

    return $myObject
    }

    function Funcntion2([PSObject] $obj)
    {
    //Do somthing with $obj
    }

    $obj = Init

    Function2 $obj

    最佳答案

    about_return知道这一点很重要

    In Windows PowerShell, the results of each statement are returned as output, even without a statement that contains the Return keyword.



    因此,作为 Frode said,您将获得一个字符串数组。您希望将整个对象而不是其一部分返回。如果函数的目的只是返回该自定义对象,则可以将该语句简化为一行。
    function CreateObject()
    {
    return New-Object -TypeName PSObject -Property @{
    'TargetServer' = "ServerName"
    'ScriptPath' = "SomePath"
    'ServiceName' = "ServiceName"
    }
    }

    如果您至少具有PowerShell 3.0,则可以使用 [pscustomobject]类型强制转换来完成相同的操作。
    function CreateObject()
    {
    return [pscustomobject] @{
    'TargetServer' = "ServerName"
    'ScriptPath' = "SomePath"
    'ServiceName' = "ServiceName"
    }
    }

    请注意,在这两种情况下, return关键字都是可选的,但知道它仍然充当函数的逻辑导出(直到返回该点之前的所有输出)。

    如果您不需要将函数的结果保存在变量中,也可以将其链接到下一个函数中。
    Function2 (CreateObject)

    关于Powershell:如何创建自定义对象并将其传递给Powershell中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904863/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com