2

現在のユーザーを取得して、管理者グループに追加しようとしています。これまでのところ、現在のユーザーを取得して管理者の追加に渡すことができましたが、実際に追加するために管理者の資格情報で呼び出す方法がわかりません。

$user = [Environment]::Username
$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group")
$group.add("WinNT://$env:USERDOMAIN/$User,user")

どんな助けでも大歓迎です。

4

3 に答える 3

3

実用的なソリューションは次のとおりです。

$Cred = Get-Credential ("$env:COMPUTERNAME\Administrator")
$User = $env:USERNAME
$Domain = $env:USERDOMAIN
Invoke-Command -Computername localhost -Cred $Cred -ScriptBlock {
    param ($User, $Domain, $ComputerName)
    $Group = [ADSI]("WinNT://$ComputerName/Administrators,Group")
    $Group.add("WinNT://$Domain/$User,user")
} -ArgumentList $User, $Domain, $ENV:COMPUTERNAME
于 2012-06-18T13:03:19.833 に答える
0

ADSIを代替の資格情報で使用するには、プレーンテキストで送信する必要があるため、それが最善の方法かどうかはわかりません。

$Local = New-Object -TypeName ADSI -ArgumentList @(
    "WinNT://$env:COMPUTERNAME/Administrators,group",
    $AdminUser,
    $AdminPass                           
)

$Local.Add("WinNT://$env:USERDOMAIN/$env:USERNAME")

ユーザー名は通常、domain \ user(または$ env:ComputerName \ User)の形式を取ります。

他の方法でやったほうがいいのではないでしょうか。ログオンしているユーザーアカウントから確認し、このアカウントを追加しますか?そこに到達する方法はいくつかあります(explorer.exeプロセスの所有者を確認するなどのトリックを含む)。

HTH Bartek

于 2012-05-21T15:24:31.457 に答える
0

これは現在のユーザーには機能しない可能性がありますが、一般的なユーザーまたはグループの場合、Powershell Remoting (WinRM) とInvoke-Commandおよび net.exe プログラムを使用して、ユーザーを管理者として複数のコンピューターに追加できます。

icm -ScriptBlock {& "$env:SystemRoot\system32\net.exe" localgroup Administrators /add AccountName} -ComputerName server1,server2,server3

ここで、AccountNameは AD ユーザーまたはグループであり、Server1、Server2、Server3はスクリプト ブロックを実行するコンピューターのリストです。WinRM を使用するには管理者である必要があるため、これは現在のユーザーには機能しませんが、別のユーザーまたはグループを管理者としてサーバーに追加する必要がある場合に役立ちます。

WinRM を有効にしていない場合は、PSEXECを使用してリモートで有効にすることができます。

psexec -s \Server1 cmd /c "winrm quickconfig -quiet"

于 2014-01-10T17:07:10.417 に答える