Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$ENV:SCCM Powershell脚本中的用户名_Powershell_Environment Variables_Administrator_Sccm_Non Admin - Fatal编程技术网

$ENV:SCCM Powershell脚本中的用户名

$ENV:SCCM Powershell脚本中的用户名,powershell,environment-variables,administrator,sccm,non-admin,Powershell,Environment Variables,Administrator,Sccm,Non Admin,好的,我在这里看到了关于同一个问题的答案,但我不理解它,下一步是什么。 如果我想让这条线路工作,我该怎么办 $from = "$dirFiles\config.xml" $to = "C:\Users\$env:USERNAME\AppData\Roaming\Folder\Folder\config.xml" Copy-Item $from $to -recurse 因为$env:username在通过SCCM部署时解析为我的计算机名。我应该如何进入,在哪里进入: ([Security.Pr

好的,我在这里看到了关于同一个问题的答案,但我不理解它,下一步是什么。 如果我想让这条线路工作,我该怎么办

$from = "$dirFiles\config.xml"
$to = "C:\Users\$env:USERNAME\AppData\Roaming\Folder\Folder\config.xml"
Copy-Item $from $to -recurse
因为$env:username在通过SCCM部署时解析为我的计算机名。我应该如何进入,在哪里进入:

([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

默认情况下,使用当前计算机的系统帐户执行SCCM程序

如果这是程序包/程序模型中的一个程序,则必须在程序的属性中进行更改,转到“环境”选择“程序可以运行:仅当用户登录时”和“使用用户权限运行”,也可能转到“高级”并选择“将此程序分配给计算机时:为每个登录的用户运行一次”

如果是应用程序类型,则必须转到部署类型的属性和“用户体验”,然后将“安装行为”更改为“为用户安装”

这将是SCCM的内部方法,可以满足您的需要。当然,这也意味着您将失去所有管理权限和访问权限,因为上下文现在是登录用户的。访问userprofile应该没有问题(更好的环境变量是$env:appdata btw),但您还需要为每个用户读取$dirFiles


另一种方法(如果这只需要对所有计算机执行一次)是保留管理员权限,而不是使用环境变量,让所有用户使用类似“gci C:\users”(减去public profile)的内容然后使用管理员一次替换所有用户文件。

我试图回答您提出的原始问题:您可以创建自己的变量来替换$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  

我当然不知道,你想实现什么?我试图让powershell和SCCM将一个文件复制到运行安装程序的计算机上的Appdata用户文件夹。但是我得到一个错误,文件夹C:\Users\“Computername“\不存在。因此,SCCM或powershell将$env:USERNAME变量解析为计算机名,而不是登录的用户名。因此,显而易见的问题是,如果没有人登录,您希望它如何成为用户名?您希望获得哪个用户?部署设置为仅在用户登录时安装,因此我希望获得登录的用户名。因此,基本上,除非我授予用户管理权限,否则这是不可能的。我猜您采取了错误的方法来处理此问题。甚至从系统帐户也可以通过多种方式获取当前登录的用户名(例如wmi类win32_computersystem)。也可以迭代c:\users文件夹并检查文件或文件夹上的特定活动。一条通向死角的路并不意味着什么是不可能的:它只是意味着你必须走另一条路(绕道或捷径)。我认为你不需要管理员权限来覆盖用户配置文件中的文件。用户拥有这些文件,权限应足够。您需要的是对$dirfile的访问权限,如果没有这些权限,您可能可以使用分发点为您解决这个问题。@bluf(以及我在最后一段中)所说的也是正确的,管理员可以访问其他用户,但是这在很大程度上取决于您的设置是否合理。最后,您是否意识到,每个用户复制一个文件(具有管理员权限)很容易用GPPs完成?当然:)这与管理员权限无关,我的头没有放在正确的位置。
(Get LoggedOnUser)。UserName
解决了问题
$CurrentUser=(Get LoggedOnUser).UserName
能够使用登录在您的回复上的相应用户。老实说,您的回复对我来说毫无意义(没有火焰):海报没有抱怨用户名不起作用;问题是脚本在系统帐户下运行,因此AD计算机帐户-用户名变量(以及GetCurrent()方法)将包含AD useraccount,因为这是运行脚本的useraccount。