スクリプトを使用して、ローカルプリンターのユーザーグループの「全員」のアクセス許可を変更するにはどうすればよいですか?私は掘り下げていて、PowerShellを使用してACLを使用するように指示されていますか?
Windows(PowerShellとBatchの両方)のコマンドラインからプリンターのアクセス許可を設定する方法の詳細については、以下のリソースと引用されている手順を参照してください。
プリンター権限のバッチ変更
コマンドラインツールを使用して実行する場合は、リソースキットからsubinaclを入手してください。
subinacl /printer <\printer name> /grant=Everyone=F
またはスティーブのスクリプトを変更することによって:
for /f %a in ('net share ^| find "Spooled"') do subinacl /printer %a /grant=Everyone=F
PowerShell-プリンター権限の追加
Windows Server 2012には、プリンターの自動化管理を容易にするPrintManagementモジュールが付属しています。しかし、Add-PrinterやSet-Printerなどのコマンドレットをテストすると、パラメーター-PermissionSDDLを使用してのみプリンターのアクセス許可を設定できることに気付きました。両方のコマンドレットのこれらのパラメーターは、セキュリティ定義記述言語(SDDL)を使用したプリンター許可を必要とします。これは、コマンドラインで簡単に入力できるものではありません。
Function Add-LHSPrinterPermissionSDDL { [cmdletbinding( ConfirmImpact = 'Low', SupportsShouldProcess = $false )] [OutputType('System.String')] param( [Parameter(Position=0,Mandatory=$True,ValueFromPipeline=$False, HelpMessage='A Security Group or User like "Domain\GroupName" or "Domain\UserName"')] [String]$Account, [Parameter(Position=1,Mandatory=$True,ValueFromPipeline=$False)] [String]$existingSDDL ) BEGIN { Set-StrictMode -Version Latest ${CmdletName} = $Pscmdlet.MyInvocation.MyCommand.Name } # end BEGIN PROCESS { try { $isContainer = $false $isDS = $false $SecurityDescriptor = New-Object -TypeName ` Security.AccessControl.CommonSecurityDescriptor ` $isContainer, $isDS, $existingSDDL Write-Verbose "Adding Permission for Group $Account" #get the SID for the specified Group and add it to the SDDL $NTAccount = New-Object Security.Principal.NTAccount $Account $NTAccountSid = $NTAccount.Translate([Security.Principal.SecurityIdentifier]).Value $SecurityDescriptor.DiscretionaryAcl.AddAccess( [System.Security.AccessControl.AccessControlType]::Allow, $NTAccountSid, 268435456, #full control all operations [System.Security.AccessControl.InheritanceFlags]::None, [System.Security.AccessControl.PropagationFlags]::None) | Out-Null return $SecurityDescriptor.GetSddlForm("All") } catch [Exception] { Write-Error -Message "Failed To Generate SDDL (review inner exception):`n $_.Message" ` -Exception $_.Exception } } # end PROCESS END { Write-Verbose "Function ${CmdletName} finished." } } #end Function Add-LHSPrinterPermissionSDDL