@OniVe

Как с помощью скрипта изменить программу при запуске терминальной сессии?

Для Windows Server 2003, необходимо написать скрипт по автоматической установке/изменению параметра "Свойства пользователя/Среда/Запуск программы/Имя фала программы" для группы пользователей или пользователей с именем оканчивающемся на строку "Env" например "User_Env".

Есть предположение как это можно сделать исходя из материалов данной книги (стр. 102).

А также скрипт из примера по чтению настроек:

On Error Resume Next

Dim props

Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set oFile      = FileSystem.CreateTextFile("GroupMembers.yml", True)

CRLF      = CHR(13) + CHR(10)
strDC     = "domainName.org" 'Доменное имя сервера
strRoot   = "domainName.org" 'Имя домена
strDomain = "DC=DOMAINNAME,DC=ORG"

Set DomainObj = GetObject("LDAP://" & strDC & "/CN=Users," & strDomain)

If Err.Number < 0 Then
  
  WScript.echo "Failed to connect to " & strDomain
  WScript.quit
End If

DomainObj.Filter = Array("group")

oFile.WriteLine ("groups:")

For Each GroupObj In DomainObj
  
  If GroupObj.Class = "group" Then
    
    oFile.WriteLine ( _
      "  - name        : " & MID(GroupObj.Name, 4) & CRLF & _
      "    description : " & GroupObj.Description _
    )
    
    set memberlist = GroupObj.Members
    
    If memberlist.Count > 0  Then
      
      oFile.WriteLine ("    members:")
      
      For Each member In memberlist
        
        oFile.WriteLine ("      - '{ " & _
          KeyValueStr("name", MID(member.Name, 4)) & ", " & _
          KeyValueStr("accountName", member.SAMAccountName) & ", " & _
          KeyValueStr("class", member.Class) & ", " & _
          KeyValueStr("scriptpath", member.Scriptpath)  & _
          " }'" _
        )
      Next
    End If
  End If
Next

Set DomainObj = Nothing
Set GroupObj = Nothing

If Err.Number <> 0 Then

  WScript.echo CRLF
  WScript.quit ("ERROR: " & Err.Number & " " & Err.Description & " from " & Err.Source)
  
  WScript.echo CRLF
End If

WScript.echo "Done"
WScript.quit

Function KeyValueStr(keyStr, valueStr)
  
  KeyValueStr = """" & keyStr & """: " & """" & valueStr & """"
End Function
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Get-ADUser -filter "samAccountName -like '*env'" | Set-ADUser -ScriptPath "somescriptname"
Get-ADGroupMember somegroupname | Set-ADUser -ScriptPath "somescriptname"


Нашёл.
По мотивам https://devblogs.microsoft.com/scripting/hey-scrip...

$user = [ADSI]"LDAP://$($user_DistinguishedName)"
#read
#$user.psbase.InvokeGet('TerminalServicesInitialProgram')
#write
$user.psbase.InvokeSet('TerminalServicesInitialProgram', 'cmd.exe')
$user.SetInfo()


Это пусть тоже тут побудет
https://stackoverflow.com/questions/27814791/how-t...
список всех параметров
https://docs.microsoft.com/en-us/openspecs/windows...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Добавьте запуск программы в автозапуск пользователя.
Если запускать нужно только в терминальной сессии, то запуск программы оформить в батнике, где предварительно определять терминальная сессия активна или локальная. Информацию по сессии можно получить с помощью
query session /?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы