簡體   English   中英

SCCM Powershell腳本中的$ ENV:USERNAME

[英]$ENV:USERNAME in SCCM Powershell script

好的,我在這里看到了關於同一問題的答案,但我不理解它,下一步是什么。 最初的問題 ,如果我想讓這條線工作,我應該怎么辦

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

因為通過SCCM部署時$ env:username解析為我的計算機名。 我應該在哪里輸入?

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

希望你能理解我

編輯**由於bluuf和Syberdoor向我指出了正確的方向,我找到了可以使用的東西

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

默認情況下,SCCM程序使用當前計算機的SYSTEM帳戶執行。

如果這是程序包/程序模型中的程序,則必須更改此程序,方法是在程序的屬性中轉到“環境”,然后選擇“程序可以運行:僅當用戶登錄時才能運行”和“使用用戶的身份運行”。權限”可能還轉到“高級”,然后選擇“將程序分配給計算機時:對每個登錄的用戶運行一次”

如果是應用程序類型,則必須轉到“部署類型”的屬性,然后轉到“用戶體驗”,然后將“安裝行為”更改為“為用戶安裝”。

這將是SCCM內部方法來執行您想要的操作。 當然,這也意味着您將丟失所有管理員權限和訪問權限,因為上下文現在已成為登錄用戶的權限。 對用戶配置文件的訪問應該沒有問題(更好的環境變量為$ env:appdata btw),但是您還需要為每個用戶對$ dirFiles進行讀訪問。

另一種方法(如果只需要對所有計算機執行一次)將保留管理員權限,而不是使用環境變量,而是使用“ gci C:\\ users”(減去公共配置文件)之類的方式讓所有用戶,然后用管理員一次替換所有用戶文件。

我正在嘗試回答您提出的原始問題:您可以創建自己的變量來替換$ env:username。 例如,下面我使用$ 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  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM