0

以下の詳細を含むテキスト ファイルがあるので、複数の SID を読み取り可能なユーザー名に変換できるスクリプトについて助けが必要ですが、コーディングには本当に疑問があります。

ウィンドウベースのアクセス許可ファイルには、メモ帳で開いたときに次のサンプルのような情報が含まれています

    [/]      
    S-1-5-21-1449722967-1661817991-10773629-12231=rw  
    S-1-5-21-1449722967-1661817991-10773629-15527=rw  

    [AM_ATTG:/]     
    S-1-5-21-1449722967-1661817991-10773629-1207=rw

その間に、 How can I use powershell to change sid in csv to user?から SID を変換するスクリプトを見つけました。

したがって、ファイルを .csv に保存し、最初の列の見出しをユーザーとして2 番目の列を権限として配置します。

    User                                             Permission
    [/]      
    S-1-5-21-1449722967-1661817991-10773629-12231    rw  
    S-1-5-21-1449722967-1661817991-10773629-15527    rw  

    [AM_ATTG:/]     
    S-1-5-21-1449722967-1661817991-10773629-1207     rw

しかし、最初のpowershellスクリプトを試したときに以下のエラーが発生しました.私の投稿に関するヒントについての返信は大歓迎です.

Import-Csv : Cannot process argument because the value of argument "name" is invalid. Change the value of the "name" argument and run the operation again.  
At line:1 char:19
+Import-Csv <<<<  .\sid.csv | ForEach-Object{
+ CategoryInfo          : InvalidArgument: (:) [Import-Csv], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.ImportCsvCommand
4

2 に答える 2

0

VBScript フレーバー:

sidList = Array( "S-1-5-21-1449722967-1661817991-10773629-12231=rw" _
  , "S-1-5-21-1449722967-1661817991-10773629-15527=rw" _
  , "S-1-5-21-1449722967-1661817991-10773629-1207=rw" _
)

Set wmi = GetObject("winmgmts://./root/cimv2")

For Each sid In sidList
  Set obj = wmi.Get("Win32_SID.SID='" & Replace(sid, "=rw", "") & "'")
  WScript.Echo obj.ReferencedDomainName & "\" & obj.AccountName
Next

更新: 次のように、スクリプトをフィルターとして実装できます。

Set wmi = GetObject("winmgmts://./root/cimv2")

Do Until WScript.StdIn.AtEndOfStream
  line = Trim(WScript.StdIn.ReadLine)
  If UCase(Left(line, 2)) = "S-" Then
    Set obj = wmi.Get("Win32_SID.SID='" & Replace(sid, "=rw", "") & "'")
    WScript.StdOut.WriteLine obj.ReferencedDomainName & "\" & obj.AccountName
  End If
Loop

次のようにフィルターを実行します。

type input.txt | cscript //NoLogo filter.vbs > output.txt

または を使用する必要があることに注意してください。またはcscript.exeにアクセスすることはできません。WScript.StdInWScript.StdOut

于 2013-04-09T12:48:51.280 に答える
0

csvファイルを次のようにすることをお勧めします(カンマ区切り):

Sid,Permission
S-1-5-21-1449722967-1661817991-10773629-12231,rw  
S-1-5-21-1449722967-1661817991-10773629-15527,rw   
S-1-5-21-1449722967-1661817991-10773629-1207,rw

次に、次のことができます。

Import-Csv SID.csv | 
Select-Object Sid,Permission,@{n='User';e={(New-Object System.Security.Principal.SecurityIdentifier $_.Sid).Translate([System.Security.Principal.NTAccount]).Value}}
于 2013-04-09T10:41:10.743 に答える