これは本当に厄介なエラーです-「FileSystem」プロバイダーでInitializeDefaultDrives操作を実行しようとして失敗しました。、外部の会社のときにPowerShellを起動するたびに発生します通信網。
ドメインにノートブックがあります。私がそれを使用する2つの方法があります。まず、会社のネットワーク内にあり、すべてが正常に機能します。 2つ目の方法は、オフィスの外にいてVPN経由で接続しているときです。 PowerShellを起動するたびに、上記のエラーが発生します。
エラーを再調査したところ、原因は接続できないドライブまたはリソースであるようです。
何が原因なのか調べてみました。ホームフォルダの構造にいくつかの変更があったので、私はそれを疑った。
このスクリプトを両方の場所で実行しました。
_Write-Verbose -Message 'Get-PSDrive -PSProvider FileSystem' -verbose
echo 'Get-PSDrive -PSProvider FileSystem' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Get-PSDrive -PSProvider FileSystem | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Write-Verbose -Message 'Net Use' -verbose
echo 'Net Use' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Net Use | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Write-Verbose -Message '[System.IO.DriveInfo]::GetDrives() | Format-Table' -verbose
echo '[System.IO.DriveInfo]::GetDrives() | Format-Table' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
[System.IO.DriveInfo]::GetDrives() | Format-Table | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
# does not work properly
# Write-Verbose -Message 'Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName $env:COMPUTERNAME' -verbose | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
#Get-CimInstance -Class Win32_LogicalDisk | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Write-Verbose -Message 'Get-CimInstance -Class Win32_NetworkConnection' -verbose
echo 'Get-CimInstance -Class Win32_NetworkConnection' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Get-CimInstance -Class Win32_NetworkConnection | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
_
影から潜んでいるU:\があるようです(オンプレミスでは表示されません)。これは、切断されたネットワークドライブであり、もう使用しないでください。 (これを使用するレガシープログラムがいくつかあり、GPOルール)を介して適用する必要があります)
_Net Use
_は以下を生成します:
_U: \\server_name\U_login_name$ NFS Network
_
[System.IO.DriveInfo]::GetDrives() | Format-Table
は以下を生成します:
_Name DriveType DriveFormat IsReady AvailableFre TotalFreeSpa TotalSize RootDirecto VolumeLabel
eSpace ce ry
---- --------- ----------- ------- ------------ ------------ --------- ----------- -----------
C:\ Fixed NTFS True 1779298304 1779298304 ...43488000 C:\ OSDisk
U:\ Network False U:\
_
_Get-CimInstance -Class Win32_NetworkConnection
_
_LocalName RemoteName ConnectionState Status
--------- ---------- --------------- ------
U: \\server_name\U_login_name$ Disconnected Unavailable
_
一方、会社のネットワークに直接接続している場合、U:\はありません。
手動切断
1)通常の方法(切断を右クリック)でエラーが発生しますこのネットワーク接続は存在しません
2)NFSを使用する場合_umount u:
_:
_Disconnecting U: \\server_name\U_login$
There are open files and/or incomplete directory searches pending on the connection.
Do you want to continue this operation? (Y/N) [N]:y
Network Error - 2250 Not Connected
_
3)すべてのNFSマウントの強制的な切断を試みました(U:ドライブはNFS共有として報告されます)_umount -f -a
_:
_Network Error - 2250 Not Connected
_
インターネットで見つかった提案:
1) GPOの変更
この問題を解決するには、グループポリシーを介して次の設定を適用します。
_User Configuration/Administrative Templates/System/Scripts/Run logon scripts synchronously = Enabled
_
(注:移動プロファイルを使用すると、コンピューターの起動が非常に遅くなります。この設定を無効にする必要がありました)
2)マップされたドライブは消えません
私はこのリンクに本当に高い期待を抱いていました マップされたドライブは消えません-ログオン時に再接続し続けます 私は投稿と同じ感覚を持っています-引用する:
_> I have indeed checked scripts and GPOs and this is nowhere to be found there. This looks more like a manual mapping that had the
> "Reconnect on logon" checkbox checked and is now so persistent that
> there was no "normal" way to undo it.
_
残念ながら、そこでの提案はすべて失敗しました。
レジストリ
1)レジストリで文字列を検索し、ここで見つけました:
_[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2]
_。 U:ドライブキーを削除しようとしましたが、何度も戻ってきます。
2)私もここでそれを見つけました(しかしまだそれを実験していませんでした;私はOSを壊したくありません):
_ Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-119559289-1840127793-336618761-855951\Volatile Environment]
"HOMEDRIVE"="U:"
"LOGONSERVER"="\\\\logon_server"
"USERDNSDOMAIN"="dns_domain"
"USERDOMAIN"="user_domain"
"USERNAME"="login"
"USERPROFILE"="C:\\Users\\login"
"HOMEPATH"="\\"
"HOMESHARE"="\\\\server_name\\U_login$"
"APPDATA"="C:\\Users\\login\\AppData\\Roaming"
"LOCALAPPDATA"="C:\\Users\\login\\AppData\\Local"
"USERDOMAIN_ROAMINGPROFILE"="user_domain"
[HKEY_USERS\S-1-5-21-119559289-1840127793-336618761-855951\Volatile Environment\1]
"SESSIONNAME"="Console"
"CLIENTNAME"=""
_
今のところ、移動プロファイルに問題があると結論付けました。移動プロファイルが正しい情報で更新されない理由をまだ見つけなければなりません。
誰かがそのような問題を修正する方法のアイデア/経験を持っていますか?
最後に、理由を知り、いくつかのシナリオをテストしたいと思います。
まず、これはWindows NFS[〜#〜] bug [〜#〜]であることを述べさせてください。
私はそれを単なる人間としてマイクロソフトに報告する方法を知りません。こことブログで報告します。
このエラーが伝播するために満たす必要のある条件があります。
1)コンピューターはドメイン内にある必要があります
2)このコンピューターは、内部ネットワークと本格的なVPNの両方で使用する必要があり、両方を同じプロファイルで使用する必要があります。
3)MicrosoftのNFS実装(別名Client for NFS)をインストールする必要があります
4)コンピュータの起動時にサービスを自動的に開始する必要があります。サービスがmanual
startにあり、ブートシーケンスが完了した後に開始された場合、バグは現れません。
5)何らかのNFS共有が必要です。ここでの問題は、NFS共有が通常の_Net Use
_共有よりも優先順位をとることです。 NFS共有を切断し、_Net Use ... /persistent:yes
_を使用してマップすると、この共有は再起動後に上書きされます。再起動後、NFS共有として再度識別され、エラーが発生します。
要するに:NFS Client for Windowsサービスをmanual自動モードから。 マウント および アンマウント NFS共有用のPowerShellスクリプトと組み合わせてタスクスケジューラまたはgpeditを使用します。 一部の共有がマウントされているときにNFS Client for Windowsサービスを停止しないでください!
長い答え:
スクリプトを使用するときは、次の情報をお読みください。
メモ&&ベストプラクティス(読むことが重要です!):
_A) NFS mount, at least the Microsoft's implementation, is NOT persistent over boots. To overcome
this you have these options:
I) Schedule this script in Task scheduler under "ordinary" user e.g. DOMAIN\user and have the
check-box "Run with highest privileges" (in order to start the NFS Client service if stopped)
II) Run it in the "Local Group Policy Editor" (gpedit.msc) under "Windows Settings\Scripts"
(Startup -> mount and Shutdown -> unmount) in the sections "Computer Configuration" (for all
users) or under "User configuration" (for one specific user)
B) Do !!!NOT!!! mount NFS drive on system-wide account as "nt authority\system". At the first
glance this seems to be a good idea. Don't be fooled, it is not! When you mount NFS share
under "SYSTEM" account it will appear as fixed drive for all other users! On "SYSTEM" account
it still will show as network share. If you stop the NFS Client for Windows service, NOT
recommended when any NFS share active, and then start it again, then even under "SYSTEM"
account it will appear as "fixed" drive. It will leave user no option other than restart for
unmount.
C) It is NOT a good idea to stop Client for NFS Service when you have NFS mounted. It can lead
to unexpected states like the NFS share actually becoming a hard-drive for windows till reboot.
D) If the Client for NFS Service is started already then it is better not to stop it manually as
it can, under certain circumstances, refuse to start. It is better to have a log-off script
take care of the unmount && stopping the service
_
エラーまたはサーバー構成に関する注意:
_A) You are getting a powershell error:
"Attempting to perform the InitializeDefaultDrives operation on the 'FileSystem' provider
failed."
This error can be caused the NFS Client for Windows when service is starting with start of the
Windows. It takes precedence over "ordinary" `Net Use` and it causes powershell to check
"FileSystem".
_
広告A)解決策:NFS共有をマウントするためにこのスクリプトを使用します-開始時にgpeditポリシーを使用して設定します
タスクスケジューラを介して実行できます(NFSサービスのクライアントを起動しようとします)-スクリプトにはそのための権限が必要です。サービス「NFSのクライアント」(「NfsClnt」)を設定することを忘れないでください。
手動で起動するため、Windowsの起動時に起動しません。
_B) If you are getting this error message (at your NFS server):
"(rpc.mountd[7243]: refused mount request from 192.168.XX.XX for <mount>: illegal port 24784"
you are most probably trying to connect on port over 1024. To connect to NFS share you need
to have 'insecure' option at your /etc/exports (if missing fix it and run `exportfs -r`)
_
ヒント:サービスがまだ開始されていない場合、マウントスクリプトでは、サービスを開始するためにUACが必要です。あなたはできる:
_1) run it manually - you will see UAC window 2) create a new Task in Task Scheduler and check the check box "Run it with highest privileges" 3) create a startup powershell script in the local policies
_
U:
_ドライブ)を削除しますこの問題は、オフラインファイル機能がオンになっていて、ファイルがネットワークドライブにバックアップされている場合に発生する可能性があります。会社がクラウドサービスへの移行を優先して変更した場合、一部のアプリケーションで以前のネットワークドライブが必要であるにもかかわらず、新しいクラウドプロバイダーに切り替える必要がある場合、プロファイルにデッドロック状態が発生する可能性があります。
Microsoftの_NFS Client for windows
_を使用している場合、これは以前のネットワークドライブを取り除く方法です。
次の手順で_U:
_ドライブ(まだメッセージではありません)を削除しました。
1)-> Start Menu\Programs\Administrative Tools\Services for Network File System (NFS)
に移動します
2)アイテムを右クリックし、_client for NFS
_を選択して、_stop service
_を停止します。
3)簡単な手動取り外しが機能します!!!!
_Net Use u: /delete
--> U: was deleted successfully.
_
ウィンドウが前のドライブを忘れて、揮発性環境を新しい構成に正しく設定するには、再起動する必要があります。
_Client for NFS
_を停止すると、エラーメッセージは表示されませんnot。状態manual
にして、スクリプトで開始するだけで十分です。