如何在 powershell 中测试其他用户帐户的真实访问权限
How can test real access right for other User-Account in powershell
我需要尝试特定用户是否对 DFS 文件夹具有读取或写入权限(以验证我的 DFS)。
我是域的管理员,我在 $Credentials 中有该用户的凭据
但 Test-Path、Get-Item、New-Item 不接受凭据
在不同用户的上下文中对 运行ning 命令使用 Invoke-Command
:
$computer = 'localhost'
$cred = Get-Credential
Invoke-Command -Computer $computer -Credential $cred -ScriptBlock {
Param($path)
if (Test-Path -LiteralPath $path) {
New-Item -ItemType File "$path\your.txt"
}
} -ArgumentList 'C:\some\folder'
您也可以使用 Start-Job
,但这会 运行 脚本块在后台,因此这意味着更多的管理开销。
另一个选项,如果一切都失败了,可能是 runas.exe
,尽管它可能需要一些 creative quoting:
& runas /user:DOM\username "powershell -Command \`"&{ New-Item 'C:\some\folder\your.txt' }`"\"
如果您只需要检查给定文件夹的权限而不执行任何操作,您可以使用 Get-Acl
:
Get-Acl 'C:\some\folder' |
select -Expand Access |
? { $_.IdentityReference -like '*\username' }
而是递归地检查 acl,我使用 Start-Process
和特定凭据的真实写访问权限(start-process
是 runas
的别名)。
该过程写入一个包含 $(whoami) 内容的新文件
结束进程后检查文件是否存在及其内容。
function test-Write ($folder)
$WinCredential = Get-Credential -UserName "Domain\User" -Message "Login"
Start-Process -WindowStyle Hidden -Wait -Credential $WinCredential -FilePath "powershell.exe" -ArgumentList "whoami | out-file '$folder\test.txt'"
if ((get-content "$folder\test.txt") -like "Domain\User") {
return 'OK'
}
return 'Erreur NTFS Access'
}
我需要尝试特定用户是否对 DFS 文件夹具有读取或写入权限(以验证我的 DFS)。
我是域的管理员,我在 $Credentials 中有该用户的凭据 但 Test-Path、Get-Item、New-Item 不接受凭据
在不同用户的上下文中对 运行ning 命令使用 Invoke-Command
:
$computer = 'localhost'
$cred = Get-Credential
Invoke-Command -Computer $computer -Credential $cred -ScriptBlock {
Param($path)
if (Test-Path -LiteralPath $path) {
New-Item -ItemType File "$path\your.txt"
}
} -ArgumentList 'C:\some\folder'
您也可以使用 Start-Job
,但这会 运行 脚本块在后台,因此这意味着更多的管理开销。
另一个选项,如果一切都失败了,可能是 runas.exe
,尽管它可能需要一些 creative quoting:
& runas /user:DOM\username "powershell -Command \`"&{ New-Item 'C:\some\folder\your.txt' }`"\"
如果您只需要检查给定文件夹的权限而不执行任何操作,您可以使用 Get-Acl
:
Get-Acl 'C:\some\folder' |
select -Expand Access |
? { $_.IdentityReference -like '*\username' }
而是递归地检查 acl,我使用 Start-Process
和特定凭据的真实写访问权限(start-process
是 runas
的别名)。
该过程写入一个包含 $(whoami) 内容的新文件
结束进程后检查文件是否存在及其内容。
function test-Write ($folder)
$WinCredential = Get-Credential -UserName "Domain\User" -Message "Login"
Start-Process -WindowStyle Hidden -Wait -Credential $WinCredential -FilePath "powershell.exe" -ArgumentList "whoami | out-file '$folder\test.txt'"
if ((get-content "$folder\test.txt") -like "Domain\User") {
return 'OK'
}
return 'Erreur NTFS Access'
}