2016-08-02 2 views
0

안녕하세요 드라이브 문자를 지정하고 서식 지정하고 드라이브에 필요한 할당 단위 크기를 지정하는 PS 스크립트를 만들려고했습니다. 스크립트는 다음과 같이 간다값 ""을 "System.Char"유형으로 변환 할 수 없습니다.

DiskNumber,DriveLetter,NewFileSystemLabel,AllocationUnitSize 
7,N,Drive_N,4096 
7,N,Drive_N,4096 

:

######################## 
# New Partition/Drive letter/Format/Label/Allocation 
Measure-Command{ 

Clear 


$Datalist = Import-Csv "H:\My Documents\My Powershell\Storage_Data_Input.txt" 
$ServerList = Get-Content "H:\My Documents\My Powershell\serverlist.txt" 

ForEach ($Item in $Datalist){ 
$DiskNumber=$($Item.DiskNumber) 
$driveletter=$($Item.DriveLetter) 
$NewFileSystemLabel=$($Item.NewFileSystemLabel) 
$AllocationUnitSize=$($Item.AllocationUnitSize) 


$c=Get-Credential Domain\Userid 

foreach ($ServerName in $ServerList){ 
Write-Host "Setting Drive_"$DriveLetter" on server "$ServerName"" 
Invoke-Command -ComputerName $ServerName -Credential $c -ScriptBlock { 

Stop-Service -Name ShellHWDetection 

New-Partition -DiskNumber "$DiskNumber" -UseMaximumSize -DriveLetter "$driveletter" | Format-Volume -FileSystem NTFS -NewFileSystemLabel "$NewFileSystemLabel" -AllocationUnitSize "$AllocationUnitSize" -Force -Confirm:$false 

Start-Service -Name ShellHWDetection 

}}}} 

을 실행하는 다음과 같은 오류 방법 :

Cannot process argument transformation on parameter 'DriveLetter'. Cannot convert value "" to type "System.Char". Error: "String must be exactly one character long." 
+ CategoryInfo   : InvalidData: (:) [New-Partition], ParameterBindin...mationException 
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,New-Partition 
+ PSComputerName  : Servername 
+0

나는이 테스트 havent 한하지만 난 그렇게 대단히 감사합니다, 단지 대신 "Drive_N" – Kiran

답변

3

당신이 만약이 같은

CSV 파일 (Storage_Data_Input.txt)입니다 원격 변수를 실행하는 것은 인수 목록으로 전달되거나 "using"공급자를 사용하여 참조되어야합니다.

Invoke-Command -ComputerName $ServerName -Credential $c -ScriptBlock { 
    Stop-Service -Name ShellHWDetection 
    New-Partition -DiskNumber "$using:DiskNumber" -UseMaximumSize -DriveLetter "$using:driveletter" | Format-Volume -FileSystem NTFS -NewFileSystemLabel "$using:NewFileSystemLabel" -AllocationUnitSize "$using:AllocationUnitSize" -Force -Confirm:$false 
    Start-Service -Name ShellHWDetection 
} 
+0

안녕 크리스의 드라이브 문자 "N"를 포함해야합니다 귀하의 CSV 드라이브 문자 열에 생각합니다. 오류없이 스크립트를 실행할 수있었습니다. –