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-Key: 1865072494

Url: https://administrator.de/contentid/1865072494

Printed on: May 4, 2024 at 19:05 o'clock

Member: em-pie
em-pie Feb 08, 2022 at 17:22:08 (UTC)
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
Member: devnick
devnick Feb 08, 2022 at 19:00:51 (UTC)
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
Member: colinardo
Solution colinardo Feb 09, 2022, updated at Feb 10, 2022 at 08:56:13 (UTC)
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