
私は Windows Server 2008 (Team City) でビルド サーバーを実行しています。ビルドは、LocalService アカウントで Windows サービスとして実行される Team City エージェントによって実行されます。
ビルドの 1 つでは、作成した zip ファイルをリモート共有にコピーする必要があります。これを行うには、共有に書き込むための適切な権限を持つユーザーの資格情報を使用して新しいプロセスをシェルしようとする PowerShell スクリプトがあります。問題は、スクリプトがプロセスの作成に失敗することです。管理者ユーザーからスクリプトを正常に実行できます (したがって、スクリプト自体は問題ないように見えます)。このことから、LocalSystem アカウントには、異なる資格情報を使用して新しいプロセスをシェルする権限がないのではないかと思います。
このエラーが実際に何を意味するのか、何かご存知ですか? 注: セキュリティ イベント ログにエラーが見当たらないので、おかしいです(?)
$userName = "domain\user"
$password = "password"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist $userName, $secstr
$command = "Copy-Item d:\file.zip \\remote\share\file.zip"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
Start-Process powershell -NoNewWindow -ArgumentList "-encodedCommand", $encodedCommand -credential $credentials -wait
Start-Process 行でエラーが発生しました
System.InvalidOperationException: This command cannot be executed due to the error: Access is denied.
at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
答え1
見る私の答えにローカル システム アカウント経由で PowerShell を使用してクレジットを昇格するStackOverflowで:
スクリプトを実行する場合、特定のコマンドに制限があるようです。ローカルシステムこれはセキュリティの観点からは理にかなっています。ローカルシステム:
ローカル リソースへの完全な無制限のアクセスが可能です。これは LocalSystem の欠点でもあります。LocalSystem サービスはシステム全体を停止させるような操作を実行できるからです。