devnick
Goto Top

Pfadproblem mit Variable und UNC Pfad in Powershell

Hallo zusammen face-smile

Ich habe ein kurzes Anliegen.

Warum funktioniert folgendes Script problemlos in der Powershell ISE aber nicht als eigenständiges ps1 Script unter der normalen Powershell ausgeführt.
In der ISE wird ganz ordnungsgemäß eine Datei erstellt die "hostname.txt" heisst.
Führe ich das Script über die Powershell aus, erscheint nur eine Datei ".txt"
Freue mich über Feedback:

$hn = $system.Name
$datei = "\\192.168.0.1\d\$hn.txt"
Add-Content -Path $datei -Value "Hostname: $hostname "

Content-ID: 1865072494

Url: https://administrator.de/forum/pfadproblem-mit-variable-und-unc-pfad-in-powershell-1865072494.html

Ausgedruckt am: 24.03.2025 um 14:03 Uhr

em-pie
em-pie 08.02.2022 um 18:22:08 Uhr
Goto Top
Moin,

Vermutlich weil dein $ falsch gesetzt ist? IMHO gehört es ans d und nichts ans hn

Warum die ISE damit klar kommt, ist mir aber auch schleierhaft…

Gruß
em-pie
devnick
devnick 08.02.2022 um 20:00:51 Uhr
Goto Top
danke für die antwort.
leider nein, die Serverfreigabe ist tatsächlich nur "d" ohne $.
\\192.168.0.1\d ist korrekt.

das $ bezieht sich tatsächlich auf die o.g. variable $hn = $system.Name -> $hn.txt
colinardo
Lösung colinardo 09.02.2022, aktualisiert am 10.02.2022 um 09:56:13 Uhr
Goto Top
Servus @devnick, willkommen auf Administrator.de!
$hn = $system.Name
$datei = "\\192.168.0.1\d\$hn.txt"
Add-Content -Path $datei -Value "Hostname: $hostname "

Wenn das tatsächlich dein ganzes Skript ist dann sehe ich hier mehrere Fehler.

  • Erstens gibt es in deinem Skript keine Variable/Objekt mit dem Namen $system, so dass die Variable leer sein wird wenn es sie nicht gibt.
  • Zweitens hier zwar unrelevant aber trotzdem fehlerhaft, in der letzten Zeile verwendest du statt $hn die nicht existente Variable $hostname für den Inhalt
  • Drittens, tippe ich darauf das du in der ISE entweder nur temporär die Variable/Object $system angelegt hast und es nur deswegen in der ISE funktioniert weil eben nur dort die gecachte Variable vorhanden ist. Eine andere Möglichkeit ist das die Variable $system durch dein ISE PowerShell Profil (Pfad dazu zeigt die Eingabe von $profile) definiert wird aber eben nicht in deinem regulären Profil.

Wenn du nur den Computernamen brauchst den bekommst du immer egal wo mit der Umgebungsvariablen $env:COMPUTERNAME so das du dein Skript folgendermaßen abänderst
$datei = "\\192.168.0.1\d\$env:COMPUTERNAME.txt"  
Add-Content -LiteralPath $datei -Value "Hostname: $env:COMPUTERNAME"  
Grüße Uwe