私はC、C++、C#、Pythonのバックグラウンドから来ていますので、私はこの考え方をPowershellに適用しています。これは最初から学習していますが、一見一見矛盾しているようですすべてのオブジェクトに対して固定された基底クラス型構造に従わないため、一貫した方法で物事を照会することができます。
次は正常に動作します:これらはまた、動作しない
$env | get-member
:だから、$ ENVが有効なオブジェクトであるが、これは動作しません
$host | get-member $env:username
$env.gettype() dir $env dir $env:
が、 $ host上のこのタイプのクエリはそうしているので、私は$ hostが.net変数だと仮定していますが、$ envはそうではありませんか?
$host.gettype()
私はENVのことがわかった。また、DIRで動作します(別名取得-ChildItemコマンドレットを)が、このコロンは私が不慣れだと物事が今非常に混乱取得し始めている表記法のさらに別のタイプです。これは文字列形式ではないようですが、これについてはGoogleの投稿を見てきましたか?これは、メンバー選択または辞書キー指定子のように動作します。それがメンバーセレクターまたは辞書キーであれば、それは標準オブジェクトであるため、getメンバーは動作すると期待します。
これは、必要な変数と値を出力しますが、なぜこの構文が使用されるのか分かりません。これはDOS構文ではないので、ここで何が起こっているのでしょうか?
dir env:
しかし、dir $ envはdir $ envと同じようです:userprofile ????どうして?
$ホストは.netオブジェクトのようですが、$ envやenv:はまったく違ったものです。オブジェクトの種類がどのようなオブジェクト型であるのかは分かりませんし、型を問うこともできません従来の手段によって。最初の考えは、get-childitemがそれと動作するので、それは並べ替えのリストオブジェクトですが、それ以外は完全に失われています。
私は明らかに何かをここに欠いているので、誰かが正しい方向に私を操縦できますか?
あなたは '$ env'変数を持っていないので、 '$ env'と' $ env:something'は2つの異なる無関係なものです。 – PetSerAl
これは変数でない場合、$ envとは何ですか? env:実際にはドライブですが、$ envと$ env:usernameは別のものですが、私はそれが何であるかまだ分かりません。 – DelboyJay
'$ env'は変数ですが、' $ env = '何か'のように何かを割り当てていないので、あなたは持っていません。 '$ env:username'は' Get-Content env:username'に相当します。ここで 'env:username'はPowerShellプロバイダの項目のPowerShellのパスです。 '$ {C:\ Windows \ System.ini}'や '$ function:prompt'といったコンテンツコマンドレットを実装しているプロバイダで動作します。 – PetSerAl