
この記事は、1Cで行われた人事異動に応じて人を作成、移動、および解雇するための操作の自動化に専念しています。
スクリプトの原則は、1Cからダウンロードされたユーザーデータを解析し、このデータをさらに使用してスクリプト変数に割り当てることです。
当社では、1Cでのユーザーの確立後に、データを含むCSVファイルが作成されます。以下に例を示します。
文書タイプ | userName | フィオ | 部門 | 部門 |
---|
雇う | USERtester1 | イワノフイワンイワノビッチ | ディスペンサー | 処分および書類事務局 |
動いている | USERtester2 | ペトロフ・イヴァン・イワノビッチ | 拡張マネージャー | 信用保険部 |
解雇 | USERtester3 | シドロフ・イヴァン・イワノビッチ | 拡張マネージャー | 信用保険部 |
スクリプトには、操作のタイプに応じて3つの関数(usrcreate、usrmove、usrdelete)が含まれています。採用
部門の役職と名前に基づいてユーザーテンプレートを探しています。必要な属性とグループを取得し、それらを新しいユーザーに書き込むと同時に、ホームフォルダーを作成して接続し、郵送先住所も添付します。 レポートは、ユーザー名、フルネーム、および追加されたグループのリストとともにメールに送信されます。
人事の動き
新しい役職と従業員の新しい部門のユーザーテンプレートを見つけ、そこから新しいグループとOUアドレスのリストを取得し、見つかった後、ローミングユーザーから古いグループを削除して新しいグループに追加し、同時に新しい部門に対応するOUに転送します(そのような部門がある場合) AD)、および新しい位置にそれぞれ変更します。 新しい役職、部門、グループを含むレポートがメールに送信されます。
解雇
メールボックスを切断し、すべてのグループからユーザーを削除し、無効なユーザーのフォルダーに移動して、アカウントを切断します。 ユーザーが切断され、解雇されたというレポートがメールに送信されます。
スクリプトにはいくつかのチェックが含まれています。ExchangeおよびActive Directoryスナップインを実行する必要があることを確認します
このチェックでは、見つからない場合に処理されるデータの検索が行われ、スナップインが読み込まれないため、約7秒の時間が節約されます。
変数で処理されるデータを確認する$ getstaff | $ movestaff | $ delstaff
ユーザーの作成、移動、削除の機能を実行するため。
作成されたユーザーの存在の確認
重複したユーザー作成タスクを確認します。
ユーザーネットワークフォルダーを確認する
フォルダーの存在エラーを回避するには。
位置と部門の検証
ユーザーがすでに新しい位置に移動している場合に、重複した転送要求を確認します。
ユーザー解雇チェック
ユーザーが既に解雇されている場合に、解雇の申請の重複をチェックする。
スクリプト変数の説明:$ smtpserv | メール送信(サーバー) |
---|
$ smtpfrom | 送料(差出人) |
---|
$ smtpto | 送料(To) |
---|
$ opertype | ユーザー操作の種類 |
---|
$ usrname | SamAccountName |
---|
$ FIO | 姓名パトロニミック |
---|
$ Curdate | day.month.year形式の現在の日付 |
---|
$ del | $ Delstaff配列要素 |
---|
$デルスタッフ | 終了のためのユーザーデータ |
---|
$部門 | 部門 |
---|
$ dir | 1CがCSVをアンロードする場所 |
---|
ゲット | $ Getstaff配列要素 |
---|
$ getstaff | 雇用のためのユーザーデータ |
---|
$グループ | レポートのコピーされたグループのリスト |
---|
$移動 | $ Movestaff配列要素 |
---|
$移動スタッフ | フレーム移動のユーザーデータ |
---|
$ newusername | 名 |
---|
$ newusersurname | 姓 |
---|
$ポジション | 役職 |
---|
$ sdel | 区別された$ del |
---|
$ sget | 識別$ get |
---|
$ smove | 特別な$の動き |
---|
$シャブロン | SamAccountNameユーザーテンプレート |
---|
$ spisokf | 1Cからのアップロードディレクトリ内のファイルのリスト |
---|
$本日 | 今日の人事異動を含むファイル |
---|
$ usrcopyfrom | ユーザーテンプレート |
---|
$ usrexist | 存在を確認するためのユーザーログイン |
---|
$ usrpath | ADのユーザーの場所 |
---|
$ usrprop | テンプレートユーザープロパティ |
---|
$ usrdomain | あなたのドメイン |
---|
$セッション | Exchange管理コンソールとのセッション |
---|
$ usrshare | NASのユーザーフォルダーアドレス |
---|
$パス | ユーザー仮パスワード |
---|
$会社 | 会社名 |
---|
$ usrstate | 会社の所在地 |
---|
$ usrCity | 市区町村 |
---|
$ usrStreetAddress | ストリートハウスビル |
---|
$ curuserpath | ADの現在のローミングユーザーの場所 |
---|
$ newuserpath | ADのローミングユーザーターゲット |
---|
$ usrmoveddep | 転送順序の重複を確認する現在のユーザー部門 |
---|
$ usrmovedtit | 転送順序の重複をチェックするためのユーザーの現在の位置 |
---|
$ get | $ move | $ del配列の要素[0] | 雇用/移動/解雇の種類 |
---|
[1] | SamAccountName |
---|
[2] | 氏名 |
---|
[3] | 役職 |
---|
[4] | 部門 |
---|
スクリプト自体:
# $smtpserv = "post.domain.local" $smtpfrom = "AUTOUSERCHANGER@domain.local" $smtpto = "sysadmin@domain.local" $encoding = [System.Text.Encoding]::UTF8 $smtpBody = "" # 1 $dir= "\\fileserver\1C\" # $usrdomain="domain.local" # csv $spisokf=Get-Childitem -File -Path $dir*.csv | Select-Object -ExpandProperty Name # $curdate=Get-Date -Format dd.MM.yyyy $todayf=$spisokf | Select-String $curdate # $getstaff= Get-Content $dir$todayf |Select-String " " $movestaff= Get-Content $dir$todayf |Select-String "" $delstaff= Get-Content $dir$todayf |Select-String "" # EXCHANGE ActiveDirectory if ($getstaff -ne $null -or $movestaff -ne $null -or $delstaff -ne $null) { $Session=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://post.domain.local/PowerShell/ -Authentication Kerberos Import-PSSession $Session -AllowClobber | out-null Import-Module ActiveDirectory } else { Write-Host " " } # function usrcreate () { # ForEach ($get in $getstaff) { # $sget=$get -split (";") $opertype = $sget[0] $usrname=$sget[1] $FIO=$sget[2] $Position=$sget[3] $department=$sget[4] # $usrexist=Get-ADUser -filter {(SamAccountName -eq $usrname)} | Select-Object -ExpandProperty SamAccountName if ($usrexist -eq $null) { # $usrshare="\\FILESERVER\Users\$usrname" # $shablon=Get-ADUser -filter { (physicalDeliveryOfficeName -like $department) -and (title -like $Position) -and (Enabled -eq $true) -and (SamAccountName -ne $usrname)} | Select-Object -ExpandProperty SamAccountName $usrcopyfrom=$shablon[1] #-Path $usrprop= Get-ADUser -Identity $usrcopyfrom | Select-Object -ExpandProperty DistinguishedName $usrpath= ($usrprop -split