1

ファイル共有アーカイブ用に既に構成されているユーザーに対して OU ユーザーをチェックするための powershell スクリプトを作成中ですが、つまずきにぶつかりました。AD にクエリを実行して、OU ごとのユーザーとそのホーム ディレクトリのリストを取得し、すべての詳細をログ用のテキスト ファイルにダンプして、その後のクエリのベースにすることができます。これらの詳細を取得したら、dos コマンド (Enterprise Vault) Archivepoints.exe を実行して変数を渡します。コマンドは通常次のようになります。

Archivepoints.exe find \\fopserver045v\ouone_users$

次のコードを実行しようとすると、エラーが発生します。

$app="D:\Enterprise Vault\ArchivePoints.exe"
$EVArg = "find"
$VolLine = "\\fopserver045v\ouone_users_r$"
Invoke-Item "$app $EVArg $VolLine"

Invoke-Item : Cannot find path 'D:\Enterprise Vault\ArchivePoints.exe find \fopserver045v\ouone_users_r$' because it does not exist.

最初は、問題の原因となっている UNC パスの最初のバックスラッシュが欠落していると思っていましたが、もはや確信が持てません。

スクリプトとコマンドは EV サーバー上で実行され、UNC バスは実際にはサーバーに移動しません。これは EV 内の参照パスにすぎないため、資格情報の問題ではありません。

可能であれば、出力もファイルに記録できるようにする必要があります。

コードはどのようなもので、代わりに invoke-command または Invoke-Expression を使用する必要がありますか?

ありがとう

4

1 に答える 1

0

使用しないでくださいInvoke-Item。外部コマンドは、呼び出し演算子 ( &) を使用して実行する必要があります。引数リストにはスプラッティングを使用できます。

$app="D:\Enterprise Vault\ArchivePoints.exe"
$arguments = "find", "\\fopserver045v\ouone_users_r$"

& $app @arguments
于 2013-10-16T09:45:58.047 に答える