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變量未按預期打印值
所有其他線路是否正確打印到屏幕? – Poorkenny
最有可能的是沒有一個IdentityReference值匹配「XXXXXXXXX *」,請嘗試輸出'$ strGroup'來檢查您是否仍然有值。順便說一句,你的'Select-Object IdentityReference,FileSystemRights'沒有任何用處:它只是刪除你將要忽略的屬性。 – Duncan
@Duncan它做一些有用的東西 - 對象是由'寫輸出「$」印刷',所以如果你不選擇你所關心的性質,它寫的所有屬性。 – TessellatingHeckler