Sto creando un utente (locale) per l'esecuzione di un servizio Windows. Ho buone ragioni per non voler usare SERVIZIO DI RETE, SERVIZIO LOCALE o SISTEMA LOCALE.
Creo l'utente tramite net user foobar "Abcd123!" /add
: funziona perfettamente.
A questo punto, c:\users\foobar
non esiste.
Se io creo directory home dell'utente, prima che l'utente sia accede (o, più pertinente) o il servizio che l'utente è per avvia, Windows crea un profilo utente porta accanto chiamato c:\users\foobar-{gibberish/SID/whatever}
- questo non è un nome prevedibile.
Ho bisogno che la home directory dell'utente contenga cose come una .ssh
directory, a .gitconfig
- strumenti del genere (non limitati a quegli strumenti) che fanno supposizioni che sarà una persona che li utilizza, e quindi la configurazione dell'utente va dentro ~/...
. Di solito, strumenti da un patrimonio Unix.
Domanda reale
Quindi - esiste un modo programmatico (preferibilmente, PowerShell o da riga di comando pronto all'uso) per dire a Windows di creare il profilo utente per un utente locale?
O altre soluzioni alternative?
Cose che devo ancora provare:
- Un hook di avvio / pre NSSM che copia i file da altrove nella directory del profilo utente che si spera esista a questo punto in virtù dell'avvio di Windows del servizio, della creazione del profilo utente e del controllo del wrapper NSSM che esegue il hook prima dell'avvio.
- L'impostazione della variabile di ambiente USERPROFILE per il servizio deve essere in un posto diverso dalla directory del profilo utente effettiva. Questo mi sembra pericolosamente fuoripista ma potrebbe anche funzionare bene.
Altro contesto:
- Windows Server 2016, esperienza desktop.
- Impossibile utilizzare Core / Nano.
- Non ci sono directory attive in gioco. Non ci sarà.
- Questi sono utenti locali.
- Lo sto facendo tramite Ansible, che sta usando PowerShell sotto il cofano per le cose di Windows. In particolare il modulo win_user , con Ansible 2.7.5.
- Non voglio creare un
C:\users\default
(l'equivalente di/etc/skel
), perché ci sono alcuni utenti di servizi diversi e una dimensione non va bene per tutti. Anche questo non influisce sulla creazione del profilo utente, ma solo su cosa ci sarà. - Sto usando NSSM per gestire i servizi.
Cose che ho provato
- avviare il servizio e consentire a Windows di creare la directory
- Non voglio farlo, perché il servizio richiede segreti prima di avviarsi, quindi se lo faccio all'interno del mio processo di cottura delle immagini dovrò quindi pulirli e assicurarmi che il mio servizio non lo faccia qualsiasi lavoro durante la fase di cottura. Voglio evitare entrambi quei pezzi difficili.
net user
(ad es./HOMEDIR
O/PROFILEPATH
)? . Vederenet user /help
. Dalla mia comprensione (non testata), è possibile creare una directory per l'utente e impostarla come homedir con l'/HOMEDIR
opzione.