0

サーバー上のすべてのユーザー プロファイルで特定のファイルを検索し、lastmodifieddate でファイルを比較し、最新のファイルをすべてのユーザー プロファイルにコピーするための powershell スクリプトを作成しようとしています。このスクリプトは、ファイルの最新の 3 つのバージョンのバックアップも作成します。

私は以前、2 人だけがアプリにアクセスするパイロット環境 (これは XenApp 用です) 用にこのスクリプトを作成しましたが、現在はユーザー ベースが拡大しており、将来の成長に対応するためにスクリプトの製品バージョンを作成したいと考えています。

どんな助けでも大歓迎です。ありがとう!以下のスクリプト...

$SRC1 = "\\Server\c$\Users\XXXX1\AppData\Roaming\EMIESiteListManager\sitelist.xml"
$SRC2 = "\\Server\c$\Users\XXXX2\AppData\Roaming\EMIESiteListManager\sitelist.xml"
$SRC3 = "\\Server\c$\Users\XXXX3\AppData\Roaming\EMIESiteListManager\sitelist.xml"
$BKU = "\\storage\IT\EMSLM\Backup"

if ( (get-item $SRC1).LastWriteTime -gt (get-item $SRC2).LastWriteTime )  {Copy-Item $SRC1 $SRC2}
    else {Copy-Item $SRC2 $SRC1}

if ( (get-item $SRC1).LastWriteTime -gt (get-item $SRC3).LastWriteTime )  {Copy-Item $SRC1 $SRC3}
    else {Copy-Item $SRC3 $SRC1}

if ( (get-item $SRC1).LastWriteTime -gt (get-item $SRC2).LastWriteTime )  {Copy-Item $SRC1 $SRC2}


Remove-Item $BKU\sitelist_old_2.xml
Rename-Item $BKU\sitelist_old_1.xml $BKU\sitelist_old_2.xml
Rename-Item $BKU\sitelist.xml $BKU\sitelist_old_1.xml
Copy-Item $SRC1 $BKU

& 'C:\Program Files (x86)\Enterprise Mode Site List Manager\EMIESiteListManager.exe'

Exit
4

2 に答える 2

0

これがすべてではありませんが、始めるには良い場所です

$users = dir "\\Server\c$\Users" -Directory | select -ExpandProperty fullname
$newest = dir "\\Server\c$\Users\*\AppData\Roaming\EMIESiteListManager\sitelist.xml" | sort lastwritetime -Descending | select -First 1 -ExpandProperty fullname

$files = @()

$users | % {
    $files += $newest -replace [regex]::Escape($_)
}

$newestEnd = $files | sort {$_.length} | select -f 1

$users | % {
    $dest = Join-Path $_ $newestEnd
    copy $newest $dest -force
}
于 2015-12-18T05:32:38.170 に答える
0

Anthony Stringer の回答に基づいて作業することで、私の正確なニーズを満たすスクリプトを作成することができました。Anthony のスクリプトは機能するはずでしたが、私が望んでいたことがいくつか欠けていました。

1.) 既存の sitelist.xml ファイルですべてのプロファイルを識別し、配列またはハッシュ テーブルに配置します。

2.) sitelist.xml ファイルが存在するユーザー プロファイルにのみコピーします (私の失敗です。最初の質問でこれを要求したことはありません)。

アンソニー、出発点をありがとう。以下の更新されたスクリプト:

$Users = dir "\\server\c$\Users" -Directory -Exclude Public, Default, Administrator* | select -ExpandProperty fullname
$FilePath = "AppData\Roaming\EMIESiteListManager\sitelist.xml"
$UserPath = Join-Path -path $Users $filePath
$NewestFile = dir "\\server\c$\Users\*\AppData\Roaming\EMIESiteListManager\sitelist.xml" | sort lastwritetime -Descending | select -First 1 -ExpandProperty fullname
$BackUp = "\\storage\ctxvol01\appdata\IT\EMSLM\Backup"
$BackUpFile = "\\storage\ctxvol01\appdata\IT\EMSLM\Backup\sitelest.xml"

$EMSLM_Users = @()

$UserPath | ForEach {
    If ((Test-Path -path $_) -eq $true)
        {$EMSLM_Users += $_}
    }

$EMSLM_Users | ForEach-Object {
        Copy-Item $NewestFile $_ -force -erroraction silentlycontinue
    }

If ($NewestFile.lastwritetime -gt $BackUpFile.lastwritetime)
    {
        Remove-Item $BackUp\sitelist_old_2.xml -and Rename-Item $BackUp\sitelist_old_1.xml $BackUp\sitelist_old_2.xml -and Rename-Item $BackUp\sitelist.xml $BackUp\sitelist_old_1.xml -and Copy-Item $NewestFile $BackUp
    }

& 'C:\Program Files (x86)\Enterprise Mode Site List Manager\EMIESiteListManager.exe'

Exit
于 2015-12-21T00:02:12.940 に答える