私の要件は、リモート コンピューターに接続し、拡張子が のファイルを.TRA
別のリモート コンピューターにコピーすることです。
ここで、ソース マシンがドメイン上にないため、別の資格情報で接続する必要があるという問題が発生します。
私の最初のこだわりは、 を使おうとすることNew-PSDrive
です。保存された資格情報を渡すことを許可していないようです。私はこれのさまざまなバージョンを試しました:
$cred = Get-Credential
New-PSDrive -NAME Z: -PSprovider Filesystem -root \\Computer\Exchange -credentials $cred
エラーが発生します
プロバイダーは資格情報の使用をサポートしていません。資格証明を指定せずに操作を再実行してください。
これはバグのようです (こちらの halr9000 のコメントを参照してください: Powershellでユーザー名/パスワードを使用してネットワーク フォルダーに接続しています) 。
私の代替手段は を使用することNET USE
でした。これは正常に機能しますが、一度しか機能しません。
以下の完全なスクリプトでは、8 つの異なるマシンにマップしています。これらの作品の最初の作品。その後、NET USE
(またはNew-Object WScript.NETWORK
、上記のリンク先の Technet 記事で回避策として言及されている) を使用しようとしても失敗します。というか失敗しない。
マップされたドライブが作成されます。これは、入力するNET USE
か、エクスプローラー (およびその参照可能) で見ると確認できます。しかし、Powershell でそのドライブに接続できません。存在しないようで、Test-Path Z:
False を返します。NET USE Z: /D
ドライブを正常に削除するまで実行します。
誰かが私の問題のいずれかを手伝ってくれませんか? DOS でこれをやらせないでください!
完全なスクリプト:
$int = 0
$arrStagePC = "BOX42", "BOX43", "BOX44", "BOX45", "BOX46", "BOX47", "BOX48", "BOX49"
$arrData = "0848","5144","5292","5383","2158","2646","0061","2331"
Foreach($strComp in $arrStagePC)
{
$arr = $arrData[$int]
$comp = $strComp
net use z: \\$arr\Exchange /user:admin password
Copy-Item z:\*$date.tra \\$comp\Export$
net use z: /d
$int++
}
EDIT 以下の@Christiansが受け入れた回答をご覧ください。実際にそのフォルダーのコンテンツを取得する必要はありませんでした。ソースからデータをコピーする必要があっただけなので、そこでビジネスを行っているスクリプトの一部は次のようになります。
Foreach($strComp in $arrStagePC)
{
$arr = $arrData[$int]
$comp = $strComp
net use z: \\$arr\Exchange /user:admin password
Copy-Item FILESYSTEM::Z:\*.TRA \\$comp\Export$
net use z: /d
$int++
}