Replique o script Kix com o Powershell

1

Pretendemos substituir nossos scripts atuais do Kix por scripts do Powershell e fiquei curioso sobre como testar a associação ao grupo para mapear unidades de rede. Nosso script kix atual basicamente faz uma declaração if em todos os grupos de usuários e testa se o usuário faz parte desse grupo; se eles estiverem, ele mapeia uma unidade de rede. Aqui está um exemplo:

If InGroup("ADGROUP")
  Use m: "\server\share"
EndIf

Eu duvido que essa seja a maneira mais eficiente de fazer isso, mas queria perguntar como posso realizar a mesma coisa no PowerShell e o que as pessoas recomendam para uma maneira correta de mapear unidades e impressoras para usuários no Active Directory.

Se esta informação for necessária, todos os nossos clientes estão no Windows Vista / 7 e agora estamos mudando para o AD 2008.

    
por Rothgar 26.01.2010 / 23:13

5 respostas

2

Eu usaria as preferências de política de grupo para mapear unidades no AD. Consulte Uso de preferências de política de grupo para mapear unidades com base na associação de grupo para obter detalhes. Além disso, incentivo a educação do usuário para mostrar como adicionar locais de rede a suas bibliotecas.

    
por 26.01.2010 / 23:25
1

Eu passei TRÊS dias inteiros tentando converter nosso arquivo Kix existente (que eu criei) para o Powershell.

O que eu encontrei, o Powershell ainda não está totalmente pronto para ser usado como um script de login. Talvez na versão mais recente, mas agora com o Powershell 2.0, descobri que os comandos usados são portados principalmente pela VBS.

O comando "If" no Kixtart eu acho que é muito eficaz porque eu usei em vários sites de clientes e funciona. Puro e simples, é rápido, o comando é fácil de ler para um Administrador do Sistema que nunca usou o Kix antes. Quer dizer, se você comparar o mesmo comando de mapeamento de unidade no Kixtart com o que você tem que escrever para fazer a mesma coisa no Powershell, isso parece muito complicado.

Eu escrevi sobre isso em meu blog: link . Vou atualizá-lo com uma comparação do meu script kix com o meu script Powershell modificado e você verá o que quero dizer.

Espero que ajude.

    
por 08.05.2011 / 10:58
0

Para o lado AD, você pode querer ver os cmdlets do AD da Quest.

    
por 27.01.2010 / 00:34
0
# ************ script de connexion aux lecteurs réseau ***************

$filter = "(&(objectcategory=user)(Name=$env:username))"
$ds = New-object System.DirectoryServices.DirectorySearcher([ADSI]"",$filter)
$user = ($ds.Findone()).properties.memberof

#********************** Mappage du drive commun aux Directions  S

foreach ($grouppath in $user)
{
  $group = ([adsi]"LDAP://$($grouppath.tostring())").sAMAccountname
  switch ($group) 
  {
    "group1" {net use S: \fileserver\share1 }
    "group2" {net use S: \fileserver\share2 }
    "group3" {net use S: \fileserver\share3 }
    "group4" {net use S: \fileserver\share4 }

  }
}
    
por 23.02.2010 / 13:59
0

Para verificar a participação no grupo no PowerShell:

$wid=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp=new-object System.Security.Principal.WindowsPrincipal($wid)
$adm=[System.Security.Principal.WindowsBuiltInRole]::Administrator
$IsAdmin=$prp.IsInRole($adm)

As últimas duas linhas são o padrão a seguir para um grupo embutido (há um número destes ). Há também uma sobrecarga de IsInRole que usa uma string, por exemplo. " domínio \ grupo ".

Para mapear a unidade que está executando net use ... é provavelmente mais simples (o PowerShell pode chamar facilmente executáveis do console).

    
por 08.05.2011 / 11:44