Powershell 我可以在不使用CSV文件的情况下将命令和传递变量组合在一行中吗

Powershell 我可以在不使用CSV文件的情况下将命令和传递变量组合在一行中吗,powershell,Powershell,我正在尝试更改新用户主目录的权限。我所写的作品。但是,我希望在测试Acl“Everyone”后,从Get Acl测试中传递数据并修改它,而不导出到CSV文件 这就是我要说的:如果一个用户主页拥有“所有人完全控制权”,那么将其删除并替换为user.account,否则返回下一个主页 由于我的CSV文件具有“良好”数据,我是否可以使用If-Then-Else来确定是否修改ACL 我的道歉当我写这篇文章时,我得到了下一步尝试的想法 Get-Acl -Path $HomeDirectory | wher

我正在尝试更改新用户主目录的权限。我所写的作品。但是,我希望在测试Acl“Everyone”后,从Get Acl测试中传递数据并修改它,而不导出到CSV文件

这就是我要说的:如果一个用户主页拥有“所有人完全控制权”,那么将其删除并替换为user.account,否则返回下一个主页

由于我的CSV文件具有“良好”数据,我是否可以使用If-Then-Else来确定是否修改ACL

我的道歉当我写这篇文章时,我得到了下一步尝试的想法

Get-Acl -Path $HomeDirectory | where accesstostring -like *everyone*  | Select pschildname | Export-Csv c:\test\acl.csv -Append  

这很有效,但我认为我可以做得更好。

在写问题的过程中,我有一个想法可以尝试: foreach($csv1中的用户) { $SAN=$user.PSChildName $account=get aduser-Identity$SAN-Properties* $HomeDirectory=“$($newhome)$($Account.SamAccountName)”
$Acl=获取Acl-路径$HomeDirectory-筛选器*
如果($Acl.AccessToString-类似于“everyone”)

AccessToString是模块Microsoft.PowerShell.Securty中Get Acl下的一个字段,则这是我完成的脚本 获取模块

$import_mods = Read-Host -Prompt 'do you NEED to load modules? "y" or "n" (Y)'
if ($import_mods -ine "n")
{
Import-Module ShareUtils, PowerShellAccessControl, Microsoft.PowerShell.Security
}
$newhome = "\\xray\HDs\"
out-file -filepath C:\test\acl.csv
Get-ChildItem -Path \\xray\hd -Directory | select PSChildName | Export-Csv C:\test\xray.csv

$csv1= import-csv -path C:\test\xray.csv
foreach ($user in $csv1)
{
$SAM = $user.PSChildName
$account = get-aduser -Identity $SAM -Properties *
$HomeDirectory = "$($newhome)$($Account.SamAccountName)"   
$Acl = Get-Acl -Path $HomeDirectory -Filter *
if ($Acl.AccessToString -like "*everyone*")
{
Write-Output $user.pschildname | out-file -filepath C:\test\acl.csv -Append 
$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($Account.SamAccountName, "modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$Ar1 = New-Object system.Security.AccessControl.FileSystemAccessRule("yourdomain\Domain Admins", "full", "ContainerInherit, ObjectInherit", "None", "Allow")
$Ar2 = New-Object system.Security.AccessControl.FileSystemAccessRule("yourdomain\sadmins", "full", "ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.setaccessrule($Ar2)
$Acl.setaccessrule($Ar1)
$Acl.Setaccessrule($Ar)
# next line disables inheritance and for my enviroment this is there "everyone" comes from
$Acl.SetAccessRuleProtection($true,$false)
Set-Acl $HomeDirectory $Acl

Write-Host $SAM "fixed user"
} else {Write-Host $SAM "good user"}
}   

#3.0 rename & date acl.csv to record affected folders
  $destpath = 'C:\test\'+"acl_"+(get-date -Format yyyyMMdd)+'.txt'
$sourcepath = 'C:\test\acl.csv'
Move-Item -Path $sourcepath -Destination $destpath

exit

AccessToString
从何而来?在我的win7ps5.1安装程序中不存在此功能。。。