이미 매핑 된 프린터 목록을 먼저 확인하는 PowerShelll 스크립트를 만들려고합니다. 목록의 프린터가 매핑되지 않은 경우 프린터를 매핑합니다.Powershell에서 배열 값 생성 및 액세스
프린터 만 작동하는지 잘 확인 중입니다. 배열과 for 루프를 만들 때 프린터 이름이 잘못되어 작업이 중단되었습니다.
배열의 단일 항목에 액세스하지 못하는 것 같습니다.
이 내 현재 코드입니다 : 다음
"Buero Drucker"
가 대신 내가 나타납니다 :
"Buero Drucker hase[0]"
$printernames[0]
를 호출 할 때, 나는 다음과 같은 얻을 기대 이제
[string[]] $printernames = "Buero Drucker","hase"
for($i = 0; $i -lt $printernames.Length; $i++)
{
$printerexists = [Boolean](Get-WmiObject win32_printer -Filter "Name = $printernames[$i]")
Write-Host "Printer $printernames[$i] exists: $printerexists"
}
변수가 실제로 배열이 아닌 것 같지만 이유를 알 수 없습니다.
===== 편집 =====
을위한 루프 잘 작동하고 반복 2 번. 따라서 배열 생성이 올바르지 만 변수 액세스가 잘못되었다고 생각합니다.
변수 $ i를 이미 확인했습니다. 당신이 원하는 "Something.Property"
를 반환합니다 괄호 안에 변수를 확장
Printer Buero Drucker hase[0] exists: False
Printer Buero Drucker hase[1] exists: False
와우 정보에 대해 매우 감사드립니다. 이 정보에 대한 출처가 있습니까? 구글에서만 나는 $ variablename [$ i] –
을 찾았습니다. @julianbechtold 이것은 변수들과 관련이 없습니다. 문자열 내부에서 변수를 사용하는 것과 관련이 있습니다. [here] (https : //kevinmarquette.github. io/2017-01-13-powershell-variable-substitution-in-strings /)를 사용하면 유용한 정보를 얻을 수 있습니다. – ConnorLSW
$ printernames [$ i]는 *** 표현식 *** 변수가 아닙니다. 따라서 $()는 때로는 calle * expression squeezing *을 수행하고 그 표현식이()의 내부에서 평가되어 변수로 전개됩니다. – EBGreen