2014-03-28 62 views
0
$FShares = "\\server\share" 

ForEach ($f in $FShares) 

{ 

    $Access = Get-Acl $f | select-object -ExpandProperty Access | Select-Object IdentityReference,FileSystemRights | Where-Object {$_.IdentityReference -like "XXXXXXXXX*"} 
    Write-Output "------- Share ------------------------------" 
    Write-Output "" 
    Write-Output $f 
    Write-Output "" 
    ForEach ($a in $Access) 
    { 
     Write-Output "------- Groups, Permission and Users -------" 
     Write-Output "" 
     Write-Output $a 
     Write-Output "" 
     $strGroup = $a.IdentityReference.ToString() 
     $Members = $strGroup.split('\')[1] | foreach {Get-ADGroupMember -Recursive $_} | select-object Name 
     Write-Output $Members 
     Write-Output "" 
     Write-Output "" 
    } 
} 

當我運行此腳本時,行(Write-Output $ Members)不會打印到屏幕。在運行腳本之後,我可以手動運行它(執行寫入輸出或只是變量名稱),並且它打印正常,所以我知道該變量有一個值。不知道什麼是錯在這裏powershell變量未按預期打印值

+0

所有其他線路是否正確打印到屏幕? – Poorkenny

+0

最有可能的是沒有一個IdentityReference值匹配「XXXXXXXXX *」,請嘗試輸出'$ strGroup'來檢查您是否仍然有值。順便說一句,你的'Select-Object IdentityReference,FileSystemRights'沒有任何用處:它只是刪除你將要忽略的屬性。 – Duncan

+0

@Duncan它做一些有用的東西 - 對象是由'寫輸出「$」印刷',所以如果你不選擇你所關心的性質,它寫的所有屬性。 – TessellatingHeckler

回答

0

變化

Write-Output $a 

Write-Output "$a" 

編輯,更好:

Write-Output $a | ft 

我想,爲什麼是打碎了它擴大,但我不知道。