CIAO
Ho creato questi due script sperando che siano corretti:
codice:
# Rinomina un account sulla macchina locale.
Clear-Host
$AccountName = Read-Host "Nome Account da rinominare"
$NewName = Read-Host "Nuovo nome dell'account"
Write-Host $AccountName
Write-Host $NewName
([adsi] "WinNT://([Environment]::MachineName)/$AccountName,user").Rename($NewName)
e
codice:
# Creazione di un account sulla macchina locale.
Clear-Host
# Analizza i dati immessi da un utente.
do {
# Prede i dati da un utente.
$AccountName = Read-Host "Nome Account da creare"
$fullName = Read-Host "Nome completo utente"
$Password = Read-Host "Password utente" -AsSecureString
$Password1 = Read-Host "Verifica password utente" -AsSecureString
$groupName = Read-Host "Inserire il gruppo di appartenenza dell'account"
# Converte in chiaro le due password criptate.
$Password = [Runtime.InteropServices.Marshal]::PtrToStringAuto( [Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) )
$Password1 = [Runtime.InteropServices.Marshal]::PtrToStringAuto( [Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password1) )
# Verifica che tutti i dati immessi siano corretti.
if ( ($Password -eq "") -or ($Password -ne $Password1) -or ($AccountName -eq "") ) {
Write-Host
Write-Host "Immissione dati errata. Prego, ripetere."
Write-Host
}
}
until ( ($Password -ne "") -and ($Password -eq $Password1) -and ($AccountName -ne "") )
# Impostazione della password di un account utente che sta per essere creato.
( ([adsi] "WinNT://[Environment]::MachineName").Create("User", $accountName) ).SetPassword($password)
# Impostazione del nome completo di un account utente che sta per essere creato.
( ([adsi] "WinNT://[Environment]::MachineName").Create("User", $accountName) ).InvokeSet("FullName", $fullName)
# Addiziona un account utente, che sta per essere creato, al gruppo desiderato.
( [adsi] "WinNT://([Environment]::MachineName)/$groupName,group" ).Add( (([Environment]::MachineName).Create("User", $accountName) ).AdsPath)
# Creazione di un account e salvataggio delle informazioni relative al suo profilo.
( ([adsi] "WinNT://[Environment]::MachineName").Create("User", $accountName) ).SetInfo()
ma mi mancano alcune informazioni per ottimizzare il secondo script:
1) In Windows 7, quali caratteri devo escludere per i nomi degli account e per i nomi completi degli utenti?
2) Come si fa a verificare che il nome del gruppo digitato esista in una macchina locale?
3) Come mai un oggetto SecureString (come le mie password) deve essere decriptato per poter essere elaborato? Mi pare tanto un attentato alla sicurezza.
GRAZIE
CIAO