powershell在具有管理权限的其他userprofile中创建文件夹

时间:2017-04-07 14:52:02

标签: powershell

我有一个标准权限的用户,我需要运行一个具有管理员权限的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

中创建一个文件夹

注意:我不知道用户登录前执行程序的名称

1 个答案:

答案 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)