0

[OK]を、私はこの非常に同じ質問についてここで答えを見たが、私はそれを理解していないと次のステップは何ですか。 SCCMかかわら展開時のユーザ名は自分のコンピュータ名に解決します。私は、この行は、$ ENV以来

$from = "$dirFiles\config.xml" 
$to = "C:\Users\$env:USERNAME\AppData\Roaming\Folder\Folder\config.xml" 
Copy-Item $from $to -recurse 

仕事をしたい場合は、私が行うことになっています何 The original question 。どのように私は入ることが出来るのです。ここで

([Security.Principal.WindowsIdentity]::GetCurrent()).Name.replace("$ENV:USERDOMAIN\","") 

はあなたが理解してほしい私

編集**私は私が右方向

**$CurrentUser = (Get-LoggedOnUser).UserName** 
$from = "$dirFiles\config.xml" 
$to = "C:\Users\$CurrentUser\AppData\Roaming\Folder\Folder\config.xml" 
Copy-Item $from $to -recurse 
+1

私は確かに何を達成しようとしていますか? – 4c74356b41

+0

私はPowerShellを作成しようとしており、SCCMはセットアップが実行されているコンピュータのAppdataユーザフォルダにファイルをコピーします。しかし、フォルダ C:\ Users \ "Computername" \が存在しないというエラーが表示されます。したがって、SCCMまたはpowershellは$ env:USERNAME変数を、ログインしているユーザ名ではなくコンピュータ名に変換します。 – jetmanus

+1

だから誰もログインしていない場合、どのようにそれがユーザ名になると思いますか?どのユーザーがあなたが得ることを期待していますか? – 4c74356b41

答えて

0
に私を指摘Syberdoorをbluufとするために感謝を使用することができますどのような発見

デフォルトでは、SCCMプログラムは現在のコンピュータのSYSTEMアカウントで実行されます。

これはパッケージ/プログラムモデルのプログラムであれば、これを変更するために必要な作業はプログラムのプロパティにあります。「環境」に移動し、「プログラムを実行できます:ユーザーがログオンしている場合のみ」を選択し、 「ユーザーの権限で実行する」は、「アドバンスト」に移動し、「このプログラムがコンピュータに割り当てられているとき:ログオンするすべてのユーザーに対して1回実行」を選択することもできます。

アプリケーションタイプの場合は、展開タイプと「ユーザーエクスペリエンス」の「インストール動作」を「ユーザー用インストール」に変更します。

これは、SCCMの内部的な方法で行います。もちろん、コンテキストが現在ログオンしているユーザーであるため、すべての管理者権限とアクセス権を失うことも意味します。 userprofileへのアクセスは問題ありません(より良い環境変数は$ env:appdata btwです)が、すべてのユーザーに対して$ dirFilesへの読み取りアクセス権も必要です。

異なるアプローチ(これはすべてのコンピュータに対して一度だけ行う必要がある場合)は管理者権限を保持し、環境変数を使用する代わりに "gci C:\ users"プロファイル)、次に管理者はすべてのユーザーファイルを一度に置き換えます。

+0

ユーザー権限を与えない限り基本的には不可能です – jetmanus

+0

私はあなたに間違ったアプローチをしていますこの問題に対処する。現在のログオンユーザー名(たとえば、wmiクラスwin32_computersystemなど)をシステムアカウントから取得する方法は複数あります。 c:¥usersフォルダを繰り返し、ファイルやフォルダの特定のアクティビティを確認することもできます。行き止まりにつながる道路は、何かが不可能であるということを意味するものではありません。単に別の道路(迂回路か短縮路か)を取らなければならないということです。 – bluuf

+0

私はあなたがユーザーのプロファイルのファイルを上書きする管理者権限を必要とするとは思わない。ユーザーはこれらのファイルを所有していますが、十分な権限が必要です。あなたが必要とするのは$ dirFilesへのアクセス権です。もしそれらが与えられていなければ、おそらく配布ポイントを使ってこれを修正することができます。 @bluuf(そして最後の段落の自分自身)が言ったことは真実で、管理者は他のユーザーにアクセスすることができます。最後に、1つのファイルのユーザーあたりのコピー(管理者権限を持つ)がGPPで簡単に実行できることを認識していますか? – Syberdoor

0

私は質問した元の質問に答えようとしています。自分の変数を作成して、$ env:ユーザー名を置き換えることができます。たとえば、私は$ uuを使用しています:

$from = "$dirFiles\config.xml" 
$uu = (([Security.Principal.WindowsIdentity]::GetCurrent().Name) -split "\\")[1] 
$to = "C:\Users\$uu\AppData\Roaming\Folder\Folder\config.xml" 
Copy-Item $from $to -recurse 
+0

あなたの返信は私に正直ではありません(炎は意図されていません)。ポスターはユーザー名が正しく機能していないと不平を言っていません。問題はスクリプトがシステムアカウントで実行されるため、スクリプトを実行しているユーザーアカウントであるため、ADコンピュータアカウント - ユーザー名変数(およびGetCurrent()メソッド)にADユーザーアカウントが含まれることです。 – bluuf

関連する問題