2012-05-03 24 views
7

特定のものを処理するために管理者入力が必要なスクリプトを実行しようとしています。スクリプトをうまく実行させるのではなく、エラーをトラップしてクレデンシャルに戻そうとしていますが、ローカル管理者のクレデンシャルをトラップに渡すことはできません。誰も働くかもしれない何かを持っていますか?Powershellローカル管理者の資格情報を確認する

ドメイン資格情報を確認するMANYが見つかりましたが、これはローカル管理者アカウントです。明確にするために

、私が使用しています:

$Cred = Get-Credential

を私はそれからの出力を確認する必要が正しく、スクリプト内でさらに下のものを実行するための管理者アクセス権を持っています。

作業溶液(User978511のおかげで)

$Cred = Get-Credential 
$Computer = (gwmi Win32_ComputerSystem).Name 
$User = $Cred.Username 
$Pass = $Cred.GetNetworkCredential().Password 
$Users = ("$Computer"+"$User") 

Add-Type -assemblyname System.DirectoryServices.AccountManagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials($Users, $pass) 

if ($Result -ne "True") 
{ 
<Perform Tasks Here> 
} 

答えて

3

これはあなたにローカルの管理者が返されますが、(他の答えはここにおそらくより良いフィット感です):

$group =[ADSI]"WinNT://./Administrators" 
$members = @($group.psbase.Invoke("Members")) 
$admins = $members | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 

そして、これはチェックします資格情報:

Add-Type -assemblyname system.DirectoryServices.accountmanagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials("test", "password") 

あなたがしなければならないことは、資格情報がOKで、そのメンバーがメンバーであることを確認することですf管理者グループ

+0

ありがとう、それは非常に便利ですが、私はアカウントを確認する必要があります。私をreexplainてみましょう: 私は次のように使用しています: '$クレド=は、Get-Credential' 私が何を入力することは有効であり、タスクの残りの部分を実行するための管理者権限を持っているだろうことを確認します。 – Steve

+0

@Steve私のアップデートを参照 –

+0

ユーザー名とパスワードを入力していただきありがとうございます。 $ Credからこれらのフィールドに情報を引き出すことができるようになりました。 – Steve

4
function Is-Current-User-Admin 
{ 
    return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 
} 
+0

Mmmh。あなたの編集内容を読んだら、それはあなたが望むものではありません。しかし、ここであなたのためにいくつかのトラックがあるかもしれません:http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script .aspx –

+0

Davidに感謝します。私はこの勧告に感謝していますが、私はそのサイトをすでに見ていて、そこから多くの作業をすることはできませんでした。しかし、それは現在のユーザーをチェックするための非常に便利なスクリプトです。 – Steve

関連する問題