1

CSV ファイルに約 1000 のユーザー名のリストがあり、それらが有効になっているかどうかを確認する必要があります。オプションではないサードパーティのスナップインを使用せずにこれを行う方法に関するチュートリアルが見つからないようです。

これはかなり単純なスクリプトのようですが、正しく理解できないようです。

function Test-UserAccountDisabled
{
     param($account)
     $searcher = new-object System.DirectoryServices.DirectorySearcher
     $searcher.filter = "(sAMAccountName=$Account)"
     $user=$searcher.FindOne().GetDirectoryEntry()
     if($($user.userAccountControl) -band 0x2){$true}else{$false}
}

$file = Select-FileDialog -Title "Select a file" -Directory "C:\" -Filter "All Files (*.*)|*.*"

$users = Import-Csv $file

foreach($account in $users)
{
  Test-UserAccountDisabled($account)
}

「null値の式でメソッドを呼び出すことはできません」で戻ります。ここで何が間違っていますか?

4

2 に答える 2

2

$Account には何がありますか?

CSV ファイルに SamAccountName 列が含まれていると仮定します。

Import-Csv $file | Foreach-Object{

    $user = ([ADSISEARCHER]"(samaccountname=$($_.SamAccountName))").FindOne()

    if($user)
    {
        New-Object -TypeName PSObject -Property @{
            SamAccountName = $user.SamAccountName
            IsDisabled = $user.GetDirectoryEntry().InvokeGet('AccountDisabled')
        }
    }
    else
    {
            Write-Warning "Can't find user '$($_.SamAccountName)'"
    }
}
于 2012-08-28T17:01:31.183 に答える
0

コメンターが述べたように、C# スタイルの関数のようにlatkin呼び出しているようです。Test-UserAccountDisabledかっこは、PowerShell の配列または式を意味します。変化する

Test-UserAccountDisabled ($account)

Test-UserAccountDisabled $account

それでも問題が解決しない場合は、エラーが発生している行番号をお知らせください。

于 2012-08-28T20:10:03.460 に答える