2016-04-12 22 views
0

, gözyaşı ve bu kurullarında millet inanılmaz yardım Sonunda benim kod çalışma var, ama kırpma ve büyük harf ile biraz yardıma ihtiyacım var. Bir şey oluşturulduktan sonra bir şeyi nasıl değiştireceğimi anlıyorum, ama işlenmeden önce dönüştürmeyi tercih ederim.Powershell .ToUpper ve kaldırmak alanlarda kan, ter bir sürü sonra

#Create Security Groups 
    $GroupParams1= @{ 
     'Name' = "FS-$NAME-RW".ToUpper 
     'SamAccountName' = "FS-$NAME-RW".ToUpper 
     'GroupCategory' = "Security" 
     'GroupScope' = "Global" 
     'DisplayName' = "$NAME Read-Write Access" 
     'Path' = "OU=$LOCATION,OU=FILE SHARE GROUPS,OU=Security Groups,DC=esg,DC=intl" 
    'Description' = "Members of this group have read-write access to $Path." 
} 

o doğruysa, nasıl $ Adı Giriş nedeniyle eklenecek OLABİLİR boşluk kaldırırım:

bu doğru sözdizimi var mı?

Bu örnekte, "Test Share 123" adlı bir klasörün oluşturulmasını istiyorum, ancak bunun için oluşturulmuş olan AD grubunun "FS-TESTSHARE123-R" ve "FS-TESTSHARE123" olarak adlandırılmasını istiyorum. -RW "yerine" FS-Test Share 123-R. " Ayrıca

, benim senaryo üzerinde başka öneriniz var mı?

$Parent = read-host -prompt "Enter full parent path that will contain the new folder (ie. \\eccofs01\Groups\ECCO IT\)" 
$Name = read-host -prompt "Enter New Folder Name." 
$Path = "$($parent)$($Name)" 
$Location = read-host -prompt "Enter the AD Security Group Location (i.e. Global, Americas, Europe, Asia Pacific)" 

Import-Module ActiveDirectory 

#Create Security Groups 
$GroupParams1= @{ 
    'Name' = "FS-$NAME-RW" 
    'SamAccountName' = "FS-$NAME-RW" 
    'GroupCategory' = "Security" 
    'GroupScope' = "Global" 
    'DisplayName' = "$NAME Read-Write Access" 
    'Path' = "OU=$LOCATION,OU=FILE SHARE GROUPS,OU=Security Groups,DC=esg,DC=intl" 
    'Description' = "Members of this group have read-write access to $Path." 
} 

New-ADGroup @GroupParams1 

$GroupParams2= @{ 
    'Name' = "FS-$NAME-R" 
    'SamAccountName' = "FS-$NAME-R" 
    'GroupCategory' = "Security" 
    'GroupScope' = "Global" 
    'DisplayName' = "$NAME Read-Write Access" 
    'Path' = "OU=$LOCATION,OU=FILE SHARE GROUPS,OU=Security Groups,DC=esg,DC=intl" 
    'Description' = "Members of this group have read access to $Path" 
} 

New-ADGroup @GroupParams2 

# Create New Folder 
New-Item -Path $Path -ItemType Directory 

#Create All ACEs (permission sets) and Set ACL on the new folder 
function New-Ace { 
    [CmdletBinding()] 
    Param(
    [Parameter(Mandatory=$true, Position=0)] 
    [Security.Principal.NTAccount]$Account, 
    [Parameter(Mandatory=$false, Position=1)] 
    [Security.AccessControl.FileSystemRights]$Permissions = 'ReadAndExecute', 
    [Parameter(Mandatory=$false, Position=2)] 
    [Security.AccessControl.InheritanceFlags]$InheritanceFlags = 'ContainerInherit,ObjectInherit', 
    [Parameter(Mandatory=$false, Position=3)] 
    [Security.AccessControl.PropagationFlags]$PropagationFlags = 'None', 
    [Parameter(Mandatory=$false, Position=4)] 
    [Security.AccessControl.AccessControlType]$Type = 'Allow' 
) 

    New-Object Security.AccessControl.FileSystemAccessRule(
    $Account, $Permissions, $InheritanceFlags, $PropagationFlags, $Type 
) 
} 

$domain = 'ESG.INTL' 

$administrators = ([wmi]"Win32_Sid.Sid='S-1-5-32-544'").AccountName 

$acl = Get-Acl $path 

$administrators, "$domain\Domain Admins" | ForEach-Object { 
    $acl.AddAccessRule((New-Ace $_ 'FullControl')) 
} 
$acl.AddAccessRule((New-Ace "$domain\FS-$NAME-RW" 'Modify')) 
$acl.AddAccessRule((New-Ace "$domain\FS-$NAME-R" 'ReadAndExecute')) 

Set-Acl $path $acl 

cevap

0

:

'Name' = "FS-$($NAME.replace(' ',''))-RW".toupper() 
+0

Harika, teşekkürler! Bu bir ton yardımcı olur. Geriye doğru düşünmekteydim ve ilk olarak şunu hatırlatıyordu ki bu da onu kafa karıştırıcı hale getiriyordu ... –

+0

Rica ederim! Buraya ilk defa bir hesapla, yardımcı olabileceğime sevindim! Kodum aslında bir parens kaçırdı ama sanırım bunu anladın. – 2o1o0

+0

Evet, koştum ve hatayı gördüm. Yine de endişelenme. : D –

0

Sen yardımcı olmalıdır That

'Name' = "FS-$NAME-RW".ToUpper() 

çağrı ToUpper üzerinde parens kaçırıyorsun. Eğer sonunda boşluk kırpmak için gerekiyorsa, .... (bu bir sondaki boşluk yok gerçi) birlikte aramaları zincir olabilir benim için iş gibi görünüyor

'Name' = "FS-$NAME-RW".ToUpper().TrimEnd(' ') 
+0

I dizgenin içindeki herhangi bir boşluğu kaldırmak istediğini düşünür, sadece sonunda değil, bu durumda '.Replace()' yi kullanabilir, örneğin: ''Name' = 'FS - $ ($ NAME.Trim(). ('', '') .ToUpper()) - RW " – Negorath

+0

. Tüm boşlukları değiştirirseniz .Trim gerekli olmaz. Bunu doğru anlamadım mı? –