Linux에서 WMIC 쿼리 구성의 차이점

Linux에서 WMIC 쿼리 구성의 차이점

wmic쿼리( NODE, USER, PASS모두 둔감함)...

wmic /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

^&H80000002uint32 변환입니다HKEY_LOCAL_MACHINE

...Windows CMD 프롬프트에서 완벽하게 작동합니다. 내 로컬 Windows 컴퓨터의 노드 패키지 컨텍스트에서도 성공적으로 실행할 수 있습니다. 이는 호출 wmic이 특별히 로컬 컴퓨터(Windows)에 대해 이루어지고 문제 없이 처리되기 때문이라고 가정합니다. 나에게 필요한 것이 포함된 결과를 반환합니다...

res.sNames [ 'BB731A3DD8F089A6D4E59AF9D706...' ]

Alpine을 실행하는 Docker 컨테이너와 Express 애플리케이션을 호스팅하는 노드를 만들었습니다. 아래 지침에 따라 Linux에 WMIC를 설치했습니다.

https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts

설치가 성공했습니다.

이제 Node 앱이나 직접 명령을 통해 Ubuntu의 bash 프롬프트에서 똑같은 쿼리를 실행하면 다음과 같은 결과가 나타납니다.

$ wmic.exe /NODE:10.00.00.1 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:domain\my_user /PASSWORD:myPass! /OUTPUT:STDOUT /APPEND:STDOUT / AGGREGATE:ON 클래스 StdRegProv CALL EnumKey ^&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

[1]426

bash: H80000002, Software\Microsoft\SystemCertificates\MY\Certificates: 해당 파일 또는 디렉터리가 없습니다.

$ 오류: 설명 = 액세스가 거부되었습니다.

wmic이것이 Linux와 Windows의 문자열 형식 오류 때문인지, 아니면 Linux가 내 쿼리를 올바르게 구문 분석하지 않는 다른 변종을 실행하고 있는지 평생 알 수 없습니다 .

@AB의 제안을 시도한 후 캐럿/앰퍼샌드(^&)를 완전히 제거했는데 결과는 다음과 같습니다.

$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:aim4gain\svc_certdisc /PASSWORD:finiTAryduRationmagicDialuP! /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON 클래스 StdRegProv CALL EnumKey H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"

실수:

설명 = 접근이 거부되었습니다.

이는 두 운영 체제 모두에서 동일한 자격 증명을 사용하여 실행하는 것과 동일한 쿼리이지만 Windows에서는 인증 문제가 없습니다.

답변1

궁금해하시는 분이 계시다면 몇 시간 동안 테스트해 본 결과 오류 메시지가 매우 모호해졌습니다. Windows 스타일이 아닌 bash 스타일로 모든 것을 이스케이프하세요.

노트:

  • \$바꾸다^&
  • USER 값을 ''로 묶습니다.
  • PASSWORD 값을 ''로 묶습니다.

여기를 참조하세요(@AB에게 감사드립니다):

https://manpages.debian.org/buster/bash/bash.1.en.html#QUOTING

$ wmic /NODE:10.23.0.11 /LOCALE:MS_409 /PRIVILEGES:ENABLE /TRACE:OFF /INTERACTIVE:OFF /FAILFAST:OFF /USER:'domain\my_user' /PASSWORD:'myPass!' /OUTPUT:STDOUT /APPEND:STDOUT /AGGREGATE:ON class StdRegProv CALL EnumKey \&H80000002,"Software\Microsoft\SystemCertificates\MY\Certificates"
Executing (StdRegProv)->EnumKey()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
        ReturnValue = 0;
        sNames = {"BB731A3DD8F089A6D4E59AF9D70601F9CBB94A9D"};
};

관련 정보