none
Script alterar permissoes impressora sessão terminal server RRS feed

  • Pergunta

  • Boa tarde a todos,

    estou trabalhando em um script para terminal server e impressora de sessão, o problema é o seguinte tenho usuários remotos acessando o terminal server, usuarioA e usuarioB, cada um está em uma rede distinta, porém o usuario A precisa enviar impressões para a impressora do usuario B. então para que isso ocorra preciso que sempre que o usuario B logue no TS ele compartilhe a sua impressora de sessão e também atribua permissões para que o usuario A possa imprimir em sua impressora.


    já tenho o script em partes mas estou encontrando uma dificuldade para utilizar o get-credentials segue o script:

    Utilizo o script como usuario comum, porém o usuario comum não tem permissões para realizar compartilhamento da impressora ou atribuir permissões...

    #declaro qual será o nome da impressora, nome compartilhamento e grupo que poderá imprimir na mesma#

    $NOME_IMPRESSORA = "HP Laserjet 1018"
    $COMP_IMPRESSORA = "HPLASER"
    $NOME_GRUPO  = "impressao"

    # como usuario comum consigo o nome do usuario e nome do host

    $whoami = whoami
    $tokens = $whoami.split('\')
    $HOSTNAME = $tokens[0]
    $USERNAME = $tokens[1]

    # de acordo com o nome do usuario obtenho o nome ID de sessão que faz parte do nome da impressora de sessão

    query session $USERNAME | select-string -pattern $USERNAME > temp.txt
    $x = get-content temp.txt
    $x = [string]::join(" ", $x)
    $words = $x.split(" `t", [stringsplitoptions]::removeemptyentries)
    $SESSION_ID = $words[2]

    #Obtem nome do host cliente a partir de variaveis de sessão cmd.exe
    $HOST_CLIENT = cmd /c echo %CLIENTNAME%

    #VARIAVEL SUBSTITUI NOME IMPRESSORA ESCOLHIDO NO INICIO DO SCRIPT
    $IMP_SESSION = $NOME_IMPRESSORA

    #VARIAVEL nome impressora sessão completo 
    $NOME_IMP = "$IMP_SESSION (de $HOST_CLIENT) na sessão $SESSION_ID"

    #### UTILIZA WMI PARA OBTER A IMPRESSORA QUE SERÁ COMPARTILHADA E DADA PERMISSAO
    #### PARA GRUPO ESPECIFICADO

    ###Aqui começam meus problemas, não estou sabendo utilizar o get-credential para executar como usuario administrativo ###o restante do script, get-wmiobject que faz o compartilhamento e setacl.exe que altera as permissões.
    ### lembrando que para obter as informações que necessito trabalho com as variáveis de sessão do usuario comum, e ###depois tenho que passar como parametros para o get-wmi e setacl. 

    #$pass = cat c:\script\senha.txt | convertto-securestring -key (1..16)

    #$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "marcelo\impressora",$pass

    #get-credential $mycred

    $COMP_IMP = Get-WmiObject -class win32_printer  | where {$_.name -match "$NOME_IMPRESSORA"} | where {$_.name -match"sessão

    $SESSAO_ID"} | where {$_.name -match "de $HOST_CLIENT"}

    $COMP_IMP.sharename = "$COMP_IMPRESSORA"
    $COMP_IMP.shared = "0"
    $result = $COMP_IMP.Put()

    # variaveis gerais ALTERAR GRUPO IMPRESSAO
    $GROUP_NAME = $NOME_GRUPO

    setacl.exe -on "$NOME_IMP" -ot prn -actn ace -ace "n:$HOSTNAME\$GROUP_NAME;p:full"


    Se alguém puder me dar uma ajudinha agradeco.

    terça-feira, 15 de dezembro de 2009 17:02