2015-09-26 81 views
1

我想投一個對象內部的Select-ObjectPowerShell的:選擇對象

我似乎無法得到正確的語法:(

Select-Object ` 
       @{name='a';expression={$path}}, ` 
       @{name='b';expression={$folder}}, ` 
       @{Name='c';expression={ [System.Security.Principal.SecurityIdentifier]$_.IdentityReference.Translate([System.Security.Principal.NTAccount]).Value}}, ` 
       @{Name='SID';expression={$_.IdentityReference}} 

也能收到空字符串

內投對象

任何想法?


編輯:我應該提到我在這裏要做的。 IdentityReference似乎是給我一個SID,我只是想將它轉換爲名稱。

@briantist - 是劇組工作之外,儘量([System.Security.Principal.SecurityIdentifier]"S-1-5-XX-VALID-SID-HERE").Translate([System.Security.Principal.NTAccount]).Value我開始。

@TessellatingHeckler $_.IdentityReference.Translate([System.Security.Principal.SecurityIdentifier])沒有傷心地工作。

+0

是否'選擇-Object'外投工作? – briantist

+0

例如' '4' |選擇@ {N = 'nocast'; E = {$ _ + 1}},@ {N = '鑄造'; E = {[INT] $ _ + 1}} | fl' - 投射到'[int]'在表達式內部工作,所以你不會錯誤的語法。如果表達式由於任何原因拋出異常,它將被取消,並且你什麼也得不到,例如''a'| select @ {N ='cast'; E = {[int] $ _ + 1}} | fl'。什麼類型是'$ _'?因爲我無法從FileSystemAccessRule/NTAccount快速創建該工作。它看起來像你得到一個用戶名,翻譯成用戶名,獲得用戶名值,然後投到一個SID。你可以直接'$ _。IdentityReference.Translate([System.Security.Principal.SecurityIdentifier])'? 。 – TessellatingHeckler

+2

'([System.Security.Principal.SecurityIdentifier] $ _的IdentityReference).Translate([System.Security.Principal.NTAccount])Value' – PetSerAl

回答

0

你可以發佈更多的代碼?
這個工作對我來說:

Select-Object ` 
      @{name='a';expression={$path}}, ` 
      @{name='b';expression={$folder}}, ` 
      @{Name='c';expression={((New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList "SID").Translate([System.Security.Principal.NTAccount])).Value}}, ` 
      @{Name='SID';expression={$_.IdentityReference}} 


與輸入替換。

-ArgumentList 「SID」