30

powershell を使用してアカウント資格情報を構成しようとしていますが、機能させるには、アカウントに「サービスとしてログオン」権限を付与する必要があります。powershellでこれを行うにはどうすればよいですか?

4

12 に答える 12

7

これが私がそれを解決した方法です:

根拠:この記事

カーボンはこちらからダウンロードできます

最初に Carbon モジュールを次のようにインポートします。

Import-Module -Name $Path_To_Carbon -Global -Prefix CA

[array]$UserPrivileges = Get-CAPrivileges -Identity $UserName;
[bool]$LogOnAsAServiceprivilegeFound = $false;

if ($UserPrivileges.Length > 0)
{
    if ($UserPrivileges -contains "SeServiceLogonRight")
    {
        $LogOnAsAServiceprivilegeFound = $true;
    }
}

if ($LogOnAsAServiceprivilegeFound -eq $false)
{
    Grant-CAPrivilege -Identity $UserName "SeServiceLogonRight"
}
于 2014-03-03T19:20:52.003 に答える
5

PS内でも実行できるリンクは次のとおりですアーカイブ済み

問題は、これらの設定を管理するためのパブリック API が実際には存在しないことです。そのため、ResKits で提供されるコマンドライン ツールを使用するのに少し行き詰まります。

于 2008-11-25T15:43:34.970 に答える
4

この関数は、簡潔さと機能のバランスが取れています。権限を付与する前に、ユーザーがすでに権限を持っているかどうかを確認します。

すべての種類の特権権に対してこれをテストしたわけではありませんが、ほとんどの場合は機能するはずです。

function Add-RightToUser([string] $Username, $Right) {
    $tmp = New-TemporaryFile

    $TempConfigFile = "$tmp.inf"
    $TempDbFile = "$tmp.sdb"

    Write-Host "Getting current policy"
    secedit /export /cfg $TempConfigFile

    $sid = ((New-Object System.Security.Principal.NTAccount($Username)).Translate([System.Security.Principal.SecurityIdentifier])).Value

    $currentConfig = Get-Content -Encoding ascii $TempConfigFile

    if ($currentConfig | Select-String -Pattern "^$Right .*$sid.*$") {
        Write-Host "Already has right"
    }
    else {
        Write-Host "Adding $Right to $Username"

        $newConfig = $currentConfig -replace "^$Right .+", "`$0,*$sid"

        Set-Content -Path $TempConfigFile -Encoding ascii -Value $newConfig

        Write-Host "Importing new policy on temp database"
        secedit /import /cfg $TempConfigFile /db $TempDbFile

        Write-Host "Applying new policy to machine"
        secedit /configure /db $TempDbFile /cfg $TempConfigFile

        Write-Host "Updating policy"
        gpupdate /force

        Remove-Item $tmp* -ea 0
    }
}

#Example
Add-RightToUser -Username 'MyDomain\MyUser' -Right 'SeServiceLogonRight'
于 2021-02-18T00:41:24.493 に答える
1

PowerShell には、これを行うためのネイティブな手段がありません。つまり、おそらく WMI または ADSI のいずれかを見ることになるでしょう。VBScript で例を見つける可能性が高くなります。プログラムでユーザー権利を割り当てる方法を理解したことがあります。ただし、それができないというわけではありませんが、特に PowerShell の領域の外を見ていることになるでしょう。

于 2008-11-25T15:42:23.817 に答える