我有一个标准权限的用户,我需要运行一个具有管理员权限的powershell脚本来执行某些操作,并最终创建一个文件夹并在当前记录的userprofile中复制单个文件。 我怎么能这样做?
示例:
C:\ Users \用户名\ FOO \ foo.txt的
我这样做,但很明显,在我的管理员资料中创建了该文件夹
# DO SOMETHINGS BEFORE
$directory = $env:USERPROFILE + 'FOO'
if(!(Test-Path -Path $directory)){
New-Item -Path $env:USERPROFILE -Name "FOO" -ItemType "directory"
}
Copy-Item "testo.txt" -Destination $directory
# Copy-Item "arDigiCore.ini" -Destination $arDigiSign
提前致谢
编辑:
1 - 我运行我的powershell脚本,像标准用户(例如user1)一样记录,就像管理员一样(例如admin1)。
2 - 脚本安装程序,在结束之前,检查并在以下情况下在路径C:\ Users \ users1 \ foo
中创建一个文件夹注意:我不知道用户登录前执行程序的名称
答案 0 :(得分:0)
您可以使用query.exe
来吸引当前用户。然后筛选不是您的活动用户。
$user = (((& query user) | ? {$_ -like "*active*" -and $_ -notlike "AdminUserName"}).trim() -Replace '\s+',' ' -Split '\s')[0]
#Credit to Jaap Brasser https://gallery.technet.microsoft.com/scriptcenter/Get-LoggedOnUser-Gathers-7cbe93ea
然后转换为SID并匹配从Win32_UserProfile返回的SID
$NTUser = New-Object System.Security.Principal.NTAccount($user)
$SID = ($NTUser.Translate([System.Security.Principal.SecurityIdentifier])).value
$directory = (gcim Win32_UserProfile | ? {$_.sid -eq $SID}).localpath
if(!(Test-Path -Path (Join-Path $directory FOO))){
New-Item -Path $Directory -Name "FOO" -ItemType "directory"
}
Copy-Item "testo.txt" -Destination (Join-Path $directory FOO)