0

VDI環境でロケーションベースの印刷用のスクリプトを作成しようとしています。VDIセッションにログインすると、ネットワークプリンターは、クライアントの(シン/ゼロクライアント)IP(GPOを使用)に基づいてマップされます。そのプリンター名(つまり、「PRN-Printer1」)に基づいて、ファイルを共有(\ Server \ share \ printer1)からローカルのc:\ drive\locationにコピーする必要があります。'PRN-Printer2'の場合、\ Server \ share\printer2などからコピーします。

regキーをチェックするスクリプトと、ファイルをコピーするスクリプトをいくつか見つけましたが、すべてをまとめるのに助けが必要です。私はスクリプティングの専門家ではありませんが、いくつかのワンライナーをいじくり回すことができます。

どんな援助も大歓迎です!!!

これが私がこれまでに持っているものです...

レジストリを確認します(これがキーを探すための最良の方法かどうかはわかりません)

reg query HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers  /f "PRN-" /t REG_SZ /s /k  | find "Name"

また

pushd;sl HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers; if(test-path PRN-){--???--}ELSE{"Printer does not exist"};popd

ファイルをコピーするには:

ls "C:\drive\location" -r -i * | % {cp -force $_ ($_ -replace "c:\\drive\\location", "\\Server\share1")}

また

Copy-Item \\Server\Share\printer1\* C:\drive\location\

VDIセッションに複数のプリンターが存在する可能性があるため、このロジックをまとめる方法や、レジストリでこのプリンターを確認するための最良の方法がわかりません。

基本的に、私は何かをする必要があります:

regキー(HCLM ..)が'PRN-printer1'の場合、ファイル\ Server \ share \ printer1をc:\ drive \ locationelse...にコピーします。printer2....printer3...などを確認します。 ..

助けてください!ありがとう!

4

1 に答える 1

0

Get-Item を使用して、すべてのプリンターのリストを取得し、変数 $printername に格納できます。

$printername=(Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Printers\*").pschildname

$printername に含まれるものは次のとおりです。

PRN-printer1
PRN-printer2
PRN-printer3

$printername の $printer ごとに、以下のスクリプトを実行して、プリンターに基づいてファイルをコピーできます。

ForEach($printer in $printername) {

if ($p -match  "PRN-printer1")

{
Copy-Item "\\Server\Share\printer1\*" "C:\drive\location"

}

elseif ($p -match  "PRN-printer1")

{

Copy-Item "\\Server\Share\printer2\*" "C:\drive\location"

}

elseif ($p -match  "PRN-printer1")

{

Copy-Item "\\Server\Share\printer2\*" "C:\drive\location"

}

}
于 2012-11-12T13:34:56.313 に答える