簡體   English   中英

Powershell參數傳遞問題

[英]Powershell Parameter passing issue

我有一個奇怪的人,我已經搜索了現有的問答並沒有找到匹配的文件。 我已經使用基本格式的參數驗證編寫了函數

function FunctioName
{
    [CmdletBinding()]
    Param(
    [parameter(Mandatory)]
    [String]$VariableName
    )

當我如上所述將參數設置為Mandatory時,我得到一個參數綁定異常,指示已傳遞空值。 在調試中運行腳本,我可以看到傳遞的函數參數不為null,而是有效的字符串。 當我以完全相同的方式運行腳本而沒有強制性標志時,會將字符串傳遞到函數中並正確執行。 有沒有人有任何想法,可能是什么問題。 這個問題正在影響我的應用程序中的許多功能,有趣的是,受影響的功能似乎都只有一個參數,而帶有多個參數的功能似乎並未受到影響。

好的,謝謝大家的反饋。 順便說一句,我正在使用Powershell 5。 進一步研究該問題,我進一步發現該變量作為字符串數組傳遞給函數,但是將空字符串值附加到該數組中,我認為這是問題的原因。 這是開始變得有趣的地方,我將需要提供更多背景知識。

我運行的腳本在活動目錄中查詢滿足特定條件的用戶屬性,與之匹配的這些屬性創建了一個字符串數組,每個值都有一個用戶,主機名和其他屬性屬性的定界值。 為了確保獲取最新值,我使用了ASDI GetInfo方法,該方法似乎觸發了奇怪的行為。

在較高級別上,功能是

Function GetuserAttr
{
   $inscopeusers = New-Object System.Collections.ArrayList
   $accountlist = (Get-ADUser -Filter { attribute1 -eq "value"} -Properties attribute1).SamAccountName

 foreach ($user in $accountlist)
{
    $DN = getDN($user)   # basically a funtion I wrote to create ASDI object for user account.
    $DN.GetInfo()  # this method call appears to cause issues
    $attr1 = $DN.Get("Attribute1")
    $attr2 = $DN.Get("Attribute2")
    $hoststring = "$($user)|$($attr1)|$($attr2)"
    $inscopeusers.Add($hoststring) > null
}
return $inscopeusers
}

在此函數中返回的字符串數組被饋送到許多其他函數中,其中一個是給出我最初提出的錯誤的函數。 問題是當我使用GetInfo方法時,此函數返回的數組在數組中包含多個空值,而當我刪除命令時,該數組沒有空字符串。 當我在其他函數中對數組進行操作時,更奇怪的是,當使用GetInfo方法時,數組似乎失去了某些屬性。 因此,例如,我能夠使用foreach循環遍歷數組值,但無法按索引訪問數組值,例如$ array [1]。 通過簡單地注釋掉函數中的GetInfo方法調用,返回的數組似乎可以正常運行,您可以按索引訪問數組值。

我還有一個也使用GetInfo並返回哈希表的函數,當我嘗試對返回的哈希表進行操作時,無法使用鍵值(例如$ hashtable ['key'])訪問值,但可以使用$ hashtable訪問它們。鍵。 我知道這真的很奇怪,也無法真正想到這可能是什么

有沒有其他人遇到過類似的問題。

你錯過了一個爭論。

Function Test
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$True)]
        [String]
        $Variable
    )

    Write "$Variable"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM