programing

Add-PSSnapin을 호출하기 전에 PowerShell 스냅인이 이미 로드되었는지 확인하는 방법

abcjava 2023. 4. 21. 20:05
반응형

Add-PSSnapin을 호출하기 전에 PowerShell 스냅인이 이미 로드되었는지 확인하는 방법

PowerShell 스크립트 그룹은 함께 실행되거나 한 번에 실행되기도 합니다.각 스크립트는 특정 스냅인을 로드해야 합니다.

현재 각 스크립트가 호출하고 있습니다.Add-PSSnapin XYZ처음에.

여러 스크립트를 연속해서 실행하면 다음 스크립트가 느려집니다.

Windows PowerShell 스냅인 XYZ는 항상 추가되므로 추가할 수 없습니다.스냅인의 이름을 확인하고 다시 시도하십시오.

Add-PSSnapin을 호출하기 전에 각 스크립트에 스냅인이 이미 로드되었는지 확인하려면 어떻게 해야 합니까?

Snapin을 쿼리하지만 찾을 수 없는 경우 오류가 발생하지 않도록 PowerShell에 알려주는 다음과 같은 작업을 수행할 수 있습니다.

if ( (Get-PSSnapin -Name MySnapin -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin MySnapin
}

스캇이 이미 답을 줬어또한 로드하고 이미 로드된 경우 오류를 무시할 수도 있습니다.

Add-PSSnapin -Name <snapin> -ErrorAction SilentlyContinue

@ScottSaad의 코드샘플을 시도해 봤지만 소용이 없었습니다.정확한 이유는 알 수 없지만, 수표는 믿을 수 없고, 때로는 성공하고 때로는 실패했어요.그 결과, 이 기능을Where-Object필터링Name속성이 더 잘 작동합니다.

if ((Get-PSSnapin | ? { $_.Name -eq $SnapinName }) -eq $null) {
    Add-PSSnapin $SnapinName 
}

코드 제공:

놀랍게도 스크립트가 의존관계를 지정하는 네이티브한 방법은 아무도 언급하지 않았습니다.#REQUIRES -PSSnapin Microsoft.PowerShell...코멘트/프로세서 디렉티브.같은 방법으로 고도화를 요구할 수 있습니다.-RunAsAdministrator, 모듈:-Modules Module1,Module2및 특정 Runspace 버전입니다.

입력해서 더 읽기Get-Help about_requires

Scott Saads는 일을 하지만 내가 보기엔 이게 좀 더 빠른 것 같다.측정해 본 적은 없지만, 에러메시지가 발생하지 않기 때문에 로딩 속도가 조금 빠른 것 같습니다.

$snapinAdded = Get-PSSnapin | Select-String $snapinName
if (!$snapinAdded)
{
    Add-PSSnapin $snapinName
}

언급URL : https://stackoverflow.com/questions/1477994/how-to-check-if-powershell-snap-in-is-already-loaded-before-calling-add-pssnapin

반응형