it-swarm-ja.com

新しく追加されたユーザーのホームディレクトリの設定

完全なWindows7ビルドを実行するためのPowershellスクリプトを作成しています。必要なユーザーを追加する関数がありますが、ホームディレクトリが設定されていないため、ディレクトリがまだ「存在しない」ため、スクリプトの後のセクション(ユーザーのデスクトップの設定)が失敗します。

関数の主要部分は次のとおりです。

 [CmdletBinding()] 
 Param( 
  [Parameter(Position=0, 
      Mandatory=$True, 
      ValueFromPipeline=$True)] 
  [string]$userName, 
  [Parameter(Position=1, 
      Mandatory=$True, 
      ValueFromPipeline=$True)] 
  [string]$password, 
  [string]$computerName = $env:ComputerName, 
  [string]$description = "Created by PowerShell" 
 ) 
 $computer = [ADSI]"WinNT://$computerName" 
 $user = $computer.Create("User", $userName) 
 $user.setpassword($password) 
 $user.put("description",$description)  
 $user.SetInfo() 
} #end function New-LocalUser 

$ user.put( "HomePath"、 "\ Users\automotive\Desktop")に似たものを追加する場所はありますか?たとえば、スクリプトの後半部分が壊れないようにするためです。 。


Users.cmdスクリプトで使用しているコードは次のとおりです。

.cmdファイルのコードは次のとおりです。

SETLOCAL 

SET Profile=C:\Users
SET user=cars
SET password=cars

SET PSEXEC="C:\Program Files\SysinternalsSuite\PsExec.exe" 
SET wmic=%windir%\System32\Wbem\WMIC

FOR /F "tokens=2* delims= " %%I IN ('REG QUERY ^"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList^" /v ProfilesDirectory^|find /i ^"ProfilesDirectory^"') DO (SET ProfilesDirectory=%%J) 
@echo ProfilesDirectory: %ProfilesDirectory% 

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%Profile%" /f
REG ADD "HKCU\Software\Systinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f

Net User /add %user% %password% /comment:"Account for User" /expires:never /homedir:%Profile%\%user% 
NET LOCALGROUP Administrators /add %user%
%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%ProfilesDirectory%" /f

このコマンドで呼び出し、続いて新しいデスクトップを作成するコマンドで呼び出します。

\Windows\System32\cmd /c c:\Users\Administrator\Desktop\Users.cmd -wait

Remove-Item \Users\cars\Desktop -recurse -force
Copy-Item E:\"Desktop Cars" C:\Users\cars Desktop -recurse

DOSコマンドは、次のようになるまで正常に実行されます。

%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

その後、最後のREG ADDコマンドに到達する前に、これらすべてが赤で表示されます-

C:\>"C:\Program Files\SysinternalsSuite\PsExec.exe"  -h -u cars -p cars "C:\Windows\System32\Wbem\WMIC QUIT" 
cmd.exe : 
At C:\Users\Administrator\Desktop\Desktops.ps1:3 char:22
+ \Windows\System32\cmd <<<<  /c c:\Users\Administrator\Desktop\Users.cmd -wait
+ CategoryInfo          : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com


The system cannot find the file specified.

Connecting to local system...Starting PsExec service on local system...Connecting with PsExec service on ccm2756...Starting C:\Windows\
System32\Wbem\WMIC QUIT on ccm2756...
PsExec could not start C:\Windows\System32\Wbem\WMIC QUIT on ccm2756:

その後、アカウントとデスクトップを変更するコマンドが追加されましたが、システムを再起動するまで、ユーザーのデスクトップのファイルは「使用中」です。

2
BigRedEO

ユーザーを追加し、ローカルにホームディレクトリを設定します。

Net User UserName DerParol /add /comment:"Account for User" /expires:never /homedir:C\Acc\UserName

ローカルのAdministratorsグループにユーザーを追加します。

NET LOCALGROUP Administrators /add UserName

PSexecの一部 Sysinternals Suite

ユーザープロファイルを作成し、

proinit.cmd:

@ECHO OFF
SETLOCAL

SET Profile=C:\Acc
SET user=Troll
SET password=DerParol

SET PSEXEC="C:\Program Files\SysinternalsSuite\PSEXEC"
SET wmic=%windir%\system32\wbem\wmic

FOR /F "tokens=2* delims= " %%I IN ('REG QUERY ^"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList^" /v ProfilesDirectory^|find /i ^"ProfilesDirectory^"') DO (
SET ProfilesDirectory=%%J)
@echo ProfilesDirectory: %ProfilesDirectory%

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%Profile%" /f
REG ADD "HKCU\Software\Sysinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f

Net User /add %user% %password% /comment:"Account for User" /expires:never /homedir:%Profile%\%user% /profilepath:%Profile%\%user%
NET LOCALGROUP Administrators /add %user%
%PSEXEC% -h -u %user% -p %password% "%wmic% QUIT"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory /t REG_SZ /d "%ProfilesDirectory%" /f

Test <code>Net User</code> command

ドメイン、使用:dsadd user

@ECHO OFF
@SET user=UserName
@SET password=DerParole

@SET pwdSet=-canchpwd yes -pwdneverexpires yes
::-mustchpwd yes

@SET accSet=-disabled no -acctexpires never -upn %user%@%USERDNSDOMAIN% -samid %user%
@SET dirSet=-profile \\SERV\Acc\%user% -hmdrv R: -hmdir \\SERV\Acc\%user% -loscr enver.cmd
@SET Brand=-office "Grand-1" -company TT -dept HT -title MegaUser
@SET locSet=-tel 914-55-04-42 -email %user%[email protected]%USERDNSDOMAIN% -webpg %user%.%USERDNSDOMAIN% 
@SET callIn=-hometel 9-slip-010-292 -pager 1022 -mobile "8(777) 101-44-22" -fax "977-101-44-22" -iptel 6002
@SET nameSt=-fn User -ln Name -mi "U.N." -display "UserName II"
@SET Description=-desc "Account for User"

::@SET [email protected] dsadd user
@SET cmSet=dsadd user

@For /F %%a In ('dsquery * -filter "(objectCategory=domain)"') Do @SET dc=%%a

@SET dn="cn=%user%,cn=users,%dc:~1%
::@SET grpSet=-memberof "cn=ResourceGroup,cn=users,%dc:~1%

%cmSet% -pwd %password% %dn% %pwdSet% %accSet% %dirSet% %Brand% %locSet% %callIn% %nameSt% %Description% -uc

dsquery *  -filter "(samAccountName=%user%)" -attr * | more

dsaddユーザーテストバッチスクリプト:

dsadd user test batch script

CSVDEの一括インポート。

参照: Active Directoryへの一括インポートおよびエクスポートのステップバイステップガイド

1
STTR